Coding of significance maps and transform coefficient blocks
Patent Information
- Application Number
- KR1020237022899
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2010-04-13
- Filing Date
- 2011-04-11
- Publication Date
- 2026-08-03
- Estimated Expiration
- 2031-04-11
Smart Images

Figure 112023074133838-PAT00013_ABST
Abstract
Description
Technology Field
[0001] This application relates to the coding of significance maps indicating the locations of effective transformation coefficients within transformation coefficient blocks, and the coding of such transformation coefficient blocks. For example, such coding may be used, for example, in picture and video coding. Background Technology
[0002] In conventional video coding, images in a video sequence are typically decomposed into blocks. The blocks or the color components of the blocks are predicted by motion compensation prediction or intra-prediction. The blocks can have different sizes and can be square or rectangular. All samples of the blocks or the color components of the blocks are predicted using the same set of prediction parameters, such as reference indices (identifying a reference image in a set of already coded images), motion parameters (specifying the degree of movement of the blocks between the reference image and the current image), interpolation filters, and parameters for specifying intra-prediction modes. Motion parameters can be expressed as higher-order motion parameters, such as displacement vectors with horizontal and vertical components or affine motion parameters consisting of six components. It is also possible for one or more sets of prediction parameters (such as reference indices and motion parameters) to be associated with a single block. In that case, for each set of prediction parameters, a single intermediate prediction signal is generated for the block or the color component of the block, and the final prediction signal is made by the weighted sum of the intermediate prediction signals. The weighting parameters and perhaps a constant offset (added to the weighted sum) may also be fixed for the image, or reference image, or set of reference images, or may be included in the set of prediction parameters for the corresponding block. Similarly, still images are also often decomposed into blocks, and said blocks are predicted by an intra-frame prediction method (which may be a spatial intra-frame prediction method or a simple intra-frame prediction method for predicting the DC component of the block). In the case of a corner, the prediction signal may also be 0.
[0003] The difference between the original blocks or the color components of the original blocks and the corresponding prediction signals, also called residual signals, is typically transformed and quantized. A two-dimensional transformation is applied to the residual signals, and the resulting transformation coefficients are quantized. For this transformation coding, the blocks or the color components of the blocks used with a specific set of prediction parameters may be further subdivided before the transformation is applied. Transformed blocks may be equal to or smaller than the blocks used for prediction. It is also possible for a transformed block to contain one or more of the blocks used for prediction. In images of still images or video sequences, different transformed blocks may have different sizes, and transformed blocks may represent square or rectangular blocks.
[0004] The resulting quantized transform coefficients, also called transform coefficient levels, are then transmitted using entropy coding techniques. Therefore, blocks of transform coefficient levels are typically mapped to a vector of transform coefficient values (i.e., an ordered set) using a scan, where different scans may be used for different blocks. Zig-zig scans are often used. For blocks containing samples of a single field of an interlaced frame (these blocks may be blocks within coded fields or field blocks within coded frames), it is also common to use different scans specifically designed for the field blocks. The entropy coding algorithm commonly used to encode the resulting ordered sequence of transform coefficients is run-revel coding. Typically, a large number of transform coefficient levels are zero, and a set of zero-like consecutive transform coefficient levels can be efficiently represented by coding the number of zero-like consecutive transform coefficient levels (runs). For the remaining (non-zero) transformation factors, the actual levels are coded. There are various alternatives to run-level coding. The run preceding the non-zero factors and the levels of the non-zero transformation factors can be coded together using a single symbol or codeword. Often, special symbols for the end-of-block are included, sent after the last non-zero transformation factor. Alternatively, it is possible to first encode the number of non-zero transformation factor levels, and then code the levels and runs according to this number.
[0005] A slightly different approach is used in the highly efficient CABAC entropy coding in H.264. Here, the coding of transform coefficient levels is divided into three stages. In the first stage, for each transform block, a binary syntax element coded_block_flag is transmitted, which signals whether the transform block contains valid transform coefficient levels (i.e., non-zero transform coefficients). If this syntax element indicates that valid transform coefficient levels exist, a binary value validity map is coded, which specifies which of the transform coefficient levels have non-zero values. Then, in the backscan sequence, the values of the non-zero transform coefficient levels are coded. The validity map is coded as follows. In the scan sequence, for each coefficient, a binary syntax element significant_coeff_flag is coded, which specifies whether the corresponding transform coding level is not equal to zero. If the significant_coeff_flag bin is equal to 0—that is, if a non-zero conversion factor level exists at this scanning location—an additional binary syntax element last_significant_coeff_flag is coded. This bin indicates whether the current valid conversion factor level is the last valid conversion factor level within that block or if additional valid conversion factor levels follow in the scanning order. If last_significant_coeff_flag indicates that no additional valid conversion factors follow, no additional syntax elements are coded to specify the validity map for the block. In the next step, the values of the valid conversion factor levels are coded, their locations within the block already determined by the validity map. The values of the valid conversion factor levels are coded in reverse scanning order using the following three syntax elements. The binary syntax element coeff_abs_greater_one indicates whether the absolute value of the valid conversion factor level is greater than 1.If the binary syntax element coeff_abs_greater_one indicates that the absolute value is greater than 1, an additional syntax element coeff_abs_level_minus_one is sent, which specifies the absolute value of the transformation factor level minus 1. Finally, the binary syntax element coeff_sign_flag, which specifies the sign of the transformation factor value, is coded for each valid transformation factor level. It should be noted once again that syntax elements related to the validity map are coded in scanning order, whereas syntax elements related to the actual values of the transformation factor levels are coded in reverse scanning order to enable the use of more appropriate context models.
[0006] In CABAC entropy coding in H.264, all syntactic elements for the transformation coefficient levels are coded using binary probabilistic modeling. The non-binary syntactic element coeff_abs_level_minus_one is first binarized, that is, mapped to a sequence of binary decisions (bins), and these bins are coded sequentially. The binary syntactic elements significant_coeff_flag, last_significant_coeff_flag, coeff_abs_greater_one, and coeff_sign_flag are coded immediately. Each coded bin (including the binary syntactic elements) is associated with a context. The context is a probabilistic model for the class of the coded bins. Based on the values of the bins already coded with the corresponding context, the degree associated with the probability of one of two possible bin values for each context is estimated. For multiple bins involved in transformation coding, the context used for coding is selected based on the already transmitted syntactic elements or their positions within the block.
[0007] The validity map specifies information regarding the validity (transform factor levels differing from 0) of scan locations. In H.264 CABAC entropy coding, for a block size of 4×4, a separate context is used for each scan location to code the binary syntax elements significant_coeff_flag and the last_significant_coeff_flag, where different contexts are used for the significant_coeff_flag and last_significant_coeff_flag of the scan location, respectively. For 8×8 blocks, the same context model is used for four consecutive scan locations, resulting in 16 context models for the significant_coeff_flag and an additional 16 context models for the last_significant_coeff_flag. This context modeling method for the significant_coeff_flag and last_significant_coeff_flag has several disadvantages for large block sizes. On the one hand, if each scan location is associated with a separate context model, the number of context models increases significantly when blocks larger than 8×8 are coded. Such an increased number of context models leads to slow adaptation of probability estimation and inaccuracy of probability estimation, both of which have a negative impact on coding efficiency. On the other hand, the assignment of context to multiple consecutive scan locations (as done for 8×8 blocks in H.264) is also not optimal for large block sizes because non-zero transformation coefficients are typically concentrated in specific regions of the transformation block (whereas these regions are determined by the major structures within the corresponding blocks of the residual signal).
[0008] After coding the validity map, the block is processed in reverse scan order. If the scan location is valid, that is, if the coefficient is different from 0, the binary syntax element coeff_abs_greater_one is transmitted. The second context model from the corresponding set of context models is selected for the coeff_abs_greater_one syntax element. If the coded value of any coeff_abs_greater_one syntax element within the block is equal to 1 (i.e., the absolute coefficient is greater than 2), the context modeling switches back to the first context model of the set and uses this context model until the end of the block. Otherwise (if all coded values of coeff_abs_greater_one within the block are 0 and the corresponding absolute coefficient levels are equal to 0), the context model is selected based on the number of coeff_abs_greater_one syntax elements equal to 0 that have already been coded / decoded in the reverse scan of the block under consideration. The selection of a context model for the syntax element coeff_abs_greater_one can be summarized by the following equation, where the previous context model index C t and bin in the equation t Based on the value of the previously coded syntax element coeff_abs_greater_one represented by, the current context model index C t+1 This is selected. For the first syntax element coeff_abs_greater_one within the block, the context model index is C t It is set to be equal to =1.
[0009]
[0010] The second syntax element, coeff_abs_level_minus_one, for coding absolute transformation coefficient levels is coded only when the coeff_abs_greater_one syntax element for the same scan position is equal to 0. The non-binary syntax element coeff_abs_level_minus_one is binarized into a sequence of bins, and for the first bin of this binarization; a context model index is selected as described below. The remaining bins of the binarization are coded with fixed contexts. The context for the first bin of the binarization is selected as follows: For the first coeff_abs_level_minus_one syntax element, a first context model is selected from the set of context models for the first bin of the coeff_abs_level_minus_one syntax element, and the corresponding context model index is C t It is set to equal to =0. In each additional first bin of the coeff_abs_level_minus_one syntax element, the context modeling switches to the next context model within the set, where the number of context models within the set is limited to 5. The context model selection can be expressed by the following formula, where the current context model index (C t+1 ) is the previous context model index (C t It is selected based on ). As mentioned above, for the first syntax element coeff_abs_level_minus_one within the block, the context model index is C t It is set to equal to 0. Note that different sets of context models are used for the syntax elements coeff_abs_greater_one and coeff_abs_level_minus_one, respectively.
[0011] C t+1 (C t )=min(C t +1,4)
[0012] For large blocks, this method has several disadvantages. Because the number of effective coefficients is greater than for small blocks, the selection of the first context model for coeff_abs_greater_one (used if a value of coeff_abs_greater_one equal to 1 is coded for the blocks) is usually performed too early, and the last context model for coeff_abs_level_minus_one is reached too quickly. Therefore, most bins for coeff_abs_greater_one and coeff_abs_level_minus_one are coded using a single context model. However, since these bins usually have different probabilities, using a single context model for a large number of bins has a negative impact on coding efficiency.
[0013] Although, generally, large blocks increase computational overhead when performing spectral decomposition transforms, the ability to efficiently code both small and large blocks will enable better coding efficiency when coding sample arrays representing spatially sampled information signals, such as images, depth maps, or similar items. This is due to the dependency between spatial and spectral resolution when transforming sample arrays within blocks: as blocks become larger, the spectral resolution of the transform increases. Generally, within such individual transform regions, it is advantageous to apply individual transforms locally to the sample array so that the spectral components of the sample array do not change significantly. For small blocks, this ensures that the contents within the blocks remain relatively consistent. Conversely, if blocks are too small, the spectral resolution is low, and the ratio between ineffective and effective transform coefficients decreases.
[0014] Therefore, even when large, it will be advantageous to have a coding technique that enables efficient coding for transformation factor blocks and validity maps. The problem to be solved
[0015] Therefore, the object of the present invention is to provide a coding technique for coding conversion coefficient coding blocks and validity maps indicating the locations of valid conversion coefficients within each conversion coefficient block, so as to increase coding efficiency. means of solving the problem
[0016] This goal is achieved by the content of the independent claims.
[0017] According to a first aspect of the present application, the basic idea of the present application is that if, for associated locations within a conversion factor block, a scan order by successively extracted syntax elements indicating whether valid or invalid conversion factors are located at each location is successively associated with the locations of the conversion factor block between the locations of the conversion factor block determined according to the locations of the valid conversion factors indicated by the previously associated syntax elements, then higher coding efficiency can be achieved for validity map coding indicating the locations of valid conversion factors within the conversion factor block. In particular, the inventors have discovered that in general sample array content, such as image, video, or depth map content, effective transform coefficients mainly form clusters on a specific side of the transform coefficient block corresponding to non-zero frequencies in the vertical direction and low frequencies in the horizontal direction, or vice versa, so that it is possible to consider the locations of effective transform coefficients indicated by previously associated syntax elements to control additional scanning causes, such as an increased probability that the last effective transform coefficient within the transform coefficient block is reached earlier in proportion to a procedure in which the scan order is determined independently of the locations of effective transform coefficients indicated by previously associated syntax elements. Although what has just been mentioned is true for small blocks as well, it is particularly true for large blocks.
[0018] According to one embodiment of the present application, an entropy encoder is configured to extract information from a data stream that enables recognition of whether a valid transform factor indicated by a currently associated syntax element is the last valid transform factor independent of an exact location within a transform factor block, wherein the entropy decoder is configured not to require an additional syntax element in the case of the current syntax element associated with such a last valid transform factor. This information may include the number of valid transform factors within the block. Alternatively, second syntax elements are interleaved with first syntax elements, said second syntax elements indicate whether the last transform factors within the transform factor block are not the same for the associated locations where the valid transform factor is located.
[0019] According to one embodiment, the associator adapts the scan order according to the locations of effective transformation factors indicated at predetermined locations within the transformation factor block. For example, several subpaths traversing a subset of unconnected locations within the transformation factor block extend substantially diagonally from a pair of sides of the transformation factor block corresponding to a minimum frequency along a first direction and a highest frequency along the other direction to opposite pairs of sides of the transformation factor block corresponding to a zero frequency along a second direction and a maximum frequency along the first direction. When the associator is configured to select the scan order so that the subpaths traverse sequentially among the subpaths, with the spacing of the subpaths to the DC location within the transformation factor block increasing, each subpath traverses without interruption along the run direction, and for each subpath, the direction in which the subpath is traversed is selected by the associator according to the locations of effective transformation factors traversed among the previous subpaths. By this method, it is possible to reduce the number of syntactic elements indicating whether valid or non-valid transformation coefficients are located at each location, by increasing the probability that the last subpath in which the last valid transformation coefficient is located traverses in a certain direction, so that the last valid transformation coefficient is more likely to be within the first half of this last subpath than in its second half. The above effect is particularly valuable in the case of large transformation coefficient blocks.
[0020] According to another aspect of the present application, the present application is based on the conclusion that if, for associated locations within a transformation factor block, the aforementioned syntactic elements indicating whether a valid or invalid transformation factor is located at each location are context-adaptively entropy-decoded using contexts individually selected for each of the syntactic elements according to a number of valid transformation factors near each syntactic element indicated as valid by any previous syntactic elements, then a validity map indicating the locations of valid transformation factors within a transformation factor block can be coded more efficiently. In particular, the inventors have discovered that, with increasing sizes of transformation factor blocks, valid transformation factors are somehow clustered in specific regions within the transformation factor block, so that context adaptation considering the vicinity of the valid transformation factors, as well as being sensitive to the number of valid transformation factors traversed according to previously determined scan orders, leads to better adaptation of the context and thus increases the coding efficiency of entropy coding.
[0021] Of course, the two aspects outlined above can both be combined in an advantageous way.
[0022] Furthermore, according to another aspect of the present invention, the present invention is based on the conclusion that coding efficiency for transform factor block coding will be increased when a validity map indicating the locations of valid transform factors within a transform factor block precedes the coding of the actual values of valid transform factors within the transform factor block, and if a predetermined scan order between the locations of the transform factor block used to sequentially associate the sequence of valid transform factors and the locations of valid transform factors is used to scan the transform factor blocks in the sub-blocks using a sub-block scan order between sub-blocks as a secondary scanning of the locations of the transform factors within the sub-blocks in the order of the factors scans, and if a set of multiple context sets selected from a plurality of multiple context sets is used for the selection of a set selected according to the values of the transform factors within the sub-band of the transform factor block already transversed in the order of the sub-block scans or the values of the transform factors of the sub-block co-located in the previously decoded transform factor block, then the values of the valid transform factor values are sequentially context-adaptive entropy decoding, or the values of the transform factors of the sub-block co-located in the previously decoded transform factor block. In this way, especially when large transformation factor blocks are considered, the properties of the effective transformation factors grouped into specific regions within the transformation factor blocks outlined above are highly suitable for context adaptation. In other words, the values can be scanned in subblocks, and contexts are selected based on subblock statistics.
[0023] Again, even the latter aspect may be combined with any or both of the previously identified aspects of the present application. Brief explanation of the drawing
[0024] Preferred embodiments of the present application are described below with respect to the following drawings, FIG. 1 is a block diagram of an encoder according to one embodiment; FIGS. 2a-2c are schematic diagrams illustrating different sub-distributions of a sample array, such as blocks in an image; FIG. 3 is a block diagram of a decoder according to one embodiment; FIG. 4 is a block diagram of an encoder according to one embodiment of the present application in more detail; FIG. 5 is a block diagram of a decoder according to one embodiment of the present application in more detail; FIG. 6 is a diagram schematically illustrating the transformation of a block from the spatial domain to the spectral domain; FIG. 7 is a block diagram of a device for decoding valid transformation coefficients of a valid map and a transformation coefficient block according to one embodiment; FIG. 8 is a diagram illustrating the subdivision into subpaths of the scan order and their respective different traversing directions; FIG. 9 is a diagram schematically illustrating neighborhood definitions for specific scan locations within a conversion block according to one embodiment; FIG. 10 is a diagram schematically illustrating possible neighborhood definitions for some scan locations within transformation blocks at the boundary of a transformation block; FIG. 11 is a drawing illustrating a possible scan of conversion blocks according to another embodiment of the present application. Specific details for implementing the invention
[0025] In the description of the drawings, elements appearing in various places within these drawings are indicated by the same reference numerals in each of these drawings, and repetitive descriptions regarding the functions of these elements are avoided to prevent unnecessary duplication. Nevertheless, the functions and descriptions provided for one drawing will apply to other drawings as well, unless the opposite is explicitly indicated.
[0026] FIG. 1 illustrates an example of an encoder (10) in which aspects of the present application may be implemented. The encoder encodes an array (20) of information samples into a data stream. The array of information samples may represent any kind of spatially sampled information signal. For example, the sample array (20) may be a still image or a video image. Accordingly, the information samples may correspond to luminance values, color values, luminance values, saturation values, or other similar values. However, the information samples may be depth values in the case of a sample array (20) which is a depth map generated by, for example, a light sensor or other similar object.
[0027] The encoder (10) is a block-based encoder. That is, the encoder (10) encodes the sample array (20) into a data stream (30) in units of blocks (40). Encoding in units of blocks (40) does not necessarily mean that the encoder (10) encodes these blocks (40) completely independently of each other. More precisely, the encoder (10) may use the reconstructions of previously encoded blocks to estimate the remaining blocks or to perform intra-predict, and may use the granularity of the blocks to set coding parameters, that is, to set how each sample array region corresponding to each block is coded.
[0028] Additionally, encoder 10 is a transformation coder. That is, to convert information samples within each block (40) from the spatial domain to the spectral domain, the encoder (10) encodes the blocks (40) by using a transformation. A two-dimensional transformation, such as the DCT of the FFT or other similar, may be used. Preferably, the blocks (40) are square or rectangular in shape.
[0029] The subdivision of the sample array (20) into blocks (40) shown in FIG. 1 may be used merely for illustrative purposes. FIG. 1 illustrates a sample array (20) subdivided into a regular two-dimensional array of square or rectangular blocks (40) adjacent to each other in a non-overlapping manner. The size of the blocks (40) may be predetermined. That is, the encoder (10) may not transmit information regarding the block size of the blocks (40) in the data stream (30) to the decoder side. For example, the decoder may require a predetermined block size.
[0030] However, several alternatives are possible. For example, the blocks may overlap each other. However, such overlap may be limited to the extent that each sample of the blocks overlaps with one of the neighbor blocks arranged parallel to the current block along a predetermined direction, to the extent that each block has a portion not overlapped by any neighbor block, or, to the maximum. The latter would mean that the left and right neighbor blocks may overlap the current block to completely cover the current block but may not overlap each other, and that the same applies to vertical and diagonal neighbors.
[0031] As another alternative, sub-distribution information regarding sub-distribution used and transmitted from the decoder side via the bitstream (30) can be adapted by the encoder (10) to the contents of the sample array (20) to the blocks (40) of the sample array (20).
[0032] FIGS. 2a through 2c illustrate different examples of sub-distribution into blocks (40) of a sample array (20). FIG. 2a illustrates a quadtree-based sub-distribution into blocks (40) of different sizes of a sample array (20), having representative blocks shown in 40a, 40b, 40c, and 40d in increasing sizes. According to the sub-distribution of FIG. 2a, first, the sample array (20) is distributed into regular two-dimensional arrays of tree blocks (40d), which, ultimately, have individual sub-distribution information associated with it depending on whether or not a particular tree block (40d) can be further sub-distributed according to the quadtree structure. The tree block to the left of block 40d is, for example, sub-distributed into smaller blocks according to the quadtree structure. The encoder (10) can perform one two-dimensional transformation for each of the blocks illustrated by thick dashed lines in FIG. 2a. In other words, the encoder (10) can convert the array (20) in the block sub-distribution units.
[0033] Instead of picture tree-based sub-distribution, a more general multi-tree-based sub-distribution can be used, and the number of child nodes per hierarchy level can vary between different hierarchy levels.
[0034] FIG. 2b illustrates another example of sub-distribution. According to FIG. 2b, first, a sample array (20) is distributed into macroblocks (40b) arranged in a regular two-dimensional array in a non-overlapping and adjacent manner, wherein each macroblock (40b) has associated sub-distribution information depending on which macroblock will not be sub-distributed, or if sub-distributed, is sub-distributed into sub-blocks of the same size in a regular two-dimensional manner so that different sub-grain sizes are achieved for each different macroblock. The result is the sub-distribution of the sample array (20) into blocks (40) of different sizes having samples of different sizes indicated in 40a, 40b, and 40a'. As in FIG. 2a, the encoder (10) performs a two-dimensional transformation for each of the blocks illustrated in FIG. 2b using thick dashed lines. FIG. 2c will be discussed later.
[0035] FIG. 3 illustrates a decoder (50) capable of decoding a data stream (30) generated by an encoder (10) to restore a restored version (60) of a sample array (20). The decoder (50) restores the restored version (60) by extracting a transformation factor for each of the blocks (40) from the data stream (30) and performing an inverse transformation for each of the transformation factor blocks.
[0036] The encoder (10) and the decoder (50) may each be configured to perform entropy encoding / decoding to insert information regarding conversion factor blocks into a data stream and to extract this information from the data stream. Details regarding this point will be described later. It should be noted that the data stream (30) does not necessarily have to contain information regarding conversion factor blocks for all blocks (40) of the sample array (20). More precisely, it may be coded into the bitstream (30) in a different way as a subset of the blocks (40). For example, the encoder (10) may decide to refrain from inserting conversion factor blocks for a specific block among the blocks (40) by instead inserting alternative coding parameters into the bitstream (30) that enable the decoder (50) to predict or, if not, fill each block in the restored version (60). For example, the encoder (10) can perform texture analysis to position blocks within a sample array (20) that can be filled on the decoder side by the decoder through texture synthesis and to display them in the bitstream accordingly.
[0037] As discussed in the following drawings, the transform factor blocks do not necessarily have to represent the spectral domain representation of the original information samples of each block (40) of the sample array (20). More precisely, such transform factor blocks may represent the spectral domain representation of the predicted remainder of each block (40). FIG. 4 illustrates an embodiment of such an encoder. The encoder of FIG. 4 includes a transform stage (100), an entropy coder (102), an inverse transform stage (104), a predictor (106), and an adder (110), as well as a subtractor (108). The subtractor (108), the transform stage (100), and the entropy coder (102) are connected in series in the order mentioned between the input (112) and the output (114) of the encoder of FIG. 4. The inverse conversion stage (104), adder (110), and predictor (106) are connected in the order mentioned between the inverse input of the conversion stage (100) and the subtractor (108), with the output of the predictor (106) also connected to the additional input of the adder (110).
[0038] The coder of FIG. 4 is a predictive transformation-based block coder. That is, blocks of a sample array (20) entering as input (112) are predicted from previously encoded and restored portions of the same sample array (20), or from other previously encoded and restored sample arrays that may precede or follow the current sample array (20) at time. The prediction is performed by a predictor (106). A subtractor (108) subtracts the prediction from such original blocks, and a transformation stage (100) performs a two-dimensional transformation on the predicted remainders. The two-dimensional transformation itself or a subsequent action within the transformation stage (100) may result in the quantization of transformation coefficients within the transformation coefficient blocks. The quantized transformation coefficient blocks are coded without loss by entropy encoding, for example, within an entropy encoder (102), into the resulting data stream output to output 114. The inverse transformation stage (104) restores the quantized residual, and in turn, the adder (110) combines the restored residual with the corresponding prediction to obtain restored information samples based on which predictor (106) can predict the previously mentioned currently encoded prediction blocks. The predictor (106) may use different prediction modes, such as internal prediction modes and mutual prediction modes, to predict the blocks, and the prediction parameters are passed to the entropy encoder (102) for insertion into the data stream.
[0039] That is, according to one embodiment of FIG. 4, the transformation coefficient blocks represent the residual spectral representation of the sample array instead of its actual information samples.
[0040] It should be noted that there are various alternatives to the embodiment of FIG. 4, some of which are described in the introductory section of the specification, where the description is included in the description of FIG. 4 here. For example, the prediction generated by the predictor (106) may not be entropy encoded. More precisely, the side information may be transmitted to the decoding side using a different coding technique.
[0041] FIG. 5 is a decoder capable of decoding a data stream generated by the encoder of FIG. 4. The decoder of FIG. 5 includes an entropy decoder (150), an inverse transformation stage (152), an adder (154), and a predictor (156). The entropy decoder (150), the inverse transformation stage (152), and the adder (154) are connected in series between the input (158) and the output (160) of the decoder of FIG. 4 in the order mentioned. An additional output of the entropy decoder (150) is, in turn, connected to a predictor (156) connected between the output of the adder (154) and its additional input. The entropy decoder (150) extracts transformation factor blocks from the data stream entering the decoder at the input (158), wherein an inverse transformation is applied to the transformation factor blocks at stage 152 to obtain a residual signal. To obtain a restored block of a restored version of the sample array at the output (160), the residual signal from the adder (154) is combined with the residual from the predictor (156). Based on the restored versions, the predictor 156 recovers the predictions performed by the predictor 106 at the encoder side by generating predictions. To obtain the same predictions used at the encoder side, the predictor (156) uses prediction parameters obtained from the data stream at the input 158 of the entropy decoder (150).
[0042] In the embodiments described above, it should be noted that the spatial grain size at which the residual prediction and transformation are performed does not need to be the same. This is illustrated in FIG. 2c. This figure illustrates the sub-distributions for the prediction blocks of the predicted grain size with thick lines and the residual grain size with dashed lines. As can be seen, the sub-distributions can be selected by the encoder independently of each other. More precisely, the data stream syntax can enable the definition of a residual sub-distribution independent of the prediction sub-distribution. Alternatively, the residual sub-distribution may be an extension of the prediction sub-distribution such that each residual block is equal to the prediction block or an appropriate subset of the prediction block. This is illustrated in FIG. 2a and 2b, for example, where again, the predicted grain size is illustrated with thick lines and the residual grain size is illustrated with dashed lines. This means that in 2a-2c, all blocks having the drawing symbols associated with them will be residual blocks on which a single two-dimensional transformation will be performed, while the thicker line blocks surrounding the dashed line blocks (40a) will be prediction blocks on which, for example, prediction parameter settings are performed individually.
[0043] The above embodiments have in common that a block of (residual or original) samples will be converted into a conversion factor block at the encoder side, which will eventually be inversely converted into a block of restored samples at the decoder side. This is illustrated in FIG. 6. FIG. 6 illustrates a block of samples (200). In the case of FIG. 6, this block (200) is, for example, square and has a size of 4×4 samples (202). The samples (202) are arranged regularly along the horizontal direction (x) and the vertical direction (y). By the aforementioned two-dimensional transformation (T), the block 200 is converted into a spectral domain, i.e., a block (204) of conversion factors (206), the conversion block 204 being the same size as the block 200. That is, the conversion block (204) has the same number of conversion factors (206) as the samples in the block 200, in both the horizontal and vertical directions. However, since the transformation (T) is a spectral transformation, the transformation coefficients (206) within the transformation block (204) do not correspond to spatial locations but instead correspond to the spectral components of the contents of the block (200). In particular, while the vertical axis corresponds to the axis where spatial frequencies increase in the vertical direction, the horizontal axis of the transformation block (204) corresponds to the axis where spectral frequencies increase in the horizontal direction, where the DC component transformation coefficients are located in the corners of the block (204)—exemplarily the upper left corner—so that the transformation coefficient corresponding to the highest frequency in both the horizontal and vertical directions is located in the lower right corner. Ignoring spatial direction, the spatial frequency to which a particular transformation coefficient (206) belongs generally increases from the upper left corner to the lower right corner. Inverse transformation (T -1 By means of ), the conversion block (204) is retransmitted from the spectral domain to the spatial domain to obtain a copy (208) of block 200 again. If dequantization / losslessness occurs during the conversion, the restoration will be perfect.
[0044] As previously mentioned above, it can be seen from FIG. 6 that larger block sizes of block 200 increase the spectral resolution of the resulting spectral representation (204). Meanwhile, since quantization noise tends to spread throughout the entire block (208), sudden and very local objects within blocks 200 tend to cause deviations in the re-transformed block relative to the original block (200) due to quantization noise. The main advantage of using larger blocks, however, is that it enables better coding efficiency by allowing the ratio between the number of valid, i.e., non-zero (quantized) transformation coefficients on one hand and the number of valid transformation coefficients on the other to be reduced within the larger blocks compared to the smaller blocks. In other words, often, valid transformation coefficients, i.e., transformation coefficients not quantized to zero, are sparsely distributed across the transformation block (204). Consequently, according to the embodiments described in more detail below, the locations of the valid transformation coefficients are signaled within the data stream as a validity map. Apart from that, when the transformation coefficients are quantized, the effective transformation coefficients, i.e., the transformation coefficient levels, are transmitted within the data stream.
[0045] Accordingly, according to one embodiment of the present application, an apparatus for decoding such a validity map from a data stream or decoding a validity map from a data stream according to corresponding validity transformation coefficients may be implemented as illustrated in FIG. 7, and the entropy decoders mentioned above, namely decoder 50 and entropy decoder 150, each may include the apparatus illustrated in FIG. 7.
[0046] The device of FIG. 7 includes a map / count entropy decoder (250) and an associator (252). The map / count entropy decoder (250) is connected to an incoming input 254 in which syntax elements representing a validity map and valid transformation coefficient values are connected. As described in more detail below, there are different possibilities regarding the order in which the validity map and the syntax elements describing the valid transformation coefficient values are entered into the map / count entropy decoder (250). The validity map syntax elements may precede the corresponding levels, or both may be interleaved. However, in a preliminary step, it is assumed that the syntax elements representing the validity map precede the values (levels) of the valid transformation coefficients so that the map / count entropy decoder (250) decodes the validity map first and then decodes the transformation coefficient levels of the valid transformation coefficients.
[0047] The map / count entropy decoder (250) sequentially decodes syntactic elements representing valid maps and valid transformation coefficient values, and the associator (252) is configured to associate these sequentially decoded syntactic elements / values with locations within a transformation block (256). The scan order in which the associator (252) associates the sequentially decoded syntactic elements representing levels of valid maps and valid transformation coefficients with locations in the transformation block (256) follows a one-dimensional scan order between locations in the transformation block (256) that is the same as the order used at the encoder side to introduce these elements into the data stream. Additionally, as will be outlined in more detail below, the scan order for valid map syntactic elements may or may not be the same as the order used for valid coefficient values.
[0048] To establish a probability estimation context for entropy decoding the current syntactic element / level to be decoded as indicated by dash line 258, the map / count entropy decoder (250) may access information regarding the transformation blocks (256) available so far, as generated by the associator (252) up to the current syntactic element / level to be decoded. For example, the associator (252) may record information gathered so far from the sequentially associated syntactic elements, such as information regarding whether or not a valid transformation coefficient is located at the levels themselves or at each location, or whether nothing is known about each location of the transformation block (256), where the map / count entropy decoder (250) accesses this memory. The memory just mentioned is not illustrated in FIG. 7, but reference numeral 256 may also denote this memory as memory, or the log buffer may be for storing preliminary information obtained so far by the associator (252) and the entropy decoder (250). Accordingly, FIG. 7 illustrates the locations of valid transformation coefficients obtained from previously decoded syntax elements representing a valid map with cross symbols, and "1" indicates that the valid transformation coefficient level of the valid transformation coefficient at each location has already been decoded and is 1. In the case of valid map syntax elements preceding valid values in the data stream, a cross symbol at the location of "1" would have been written to memory (256) immediately after each value was decoded and before "1" was entered.
[0049] The following description focuses on specific embodiments for coding transformation coefficient blocks or validity maps, which are easily converted to the embodiments described above. In these embodiments, the binary syntax element coded_block_flag may be transmitted for each transformation block, which signals whether the transformation block contains any valid transformation coefficient levels (i.e., non-zero transformation coefficients). If this syntax element indicates that valid transformation coefficient levels exist, a validity map is coded, that is, only then. The validity map specifies which of the transformation coefficient levels have non-zero values, as indicated above. Valid map coding involves coding the binary syntax elements significant_coeff_flag, which respectively specify whether the corresponding transformation coefficient value is not equal to zero for each associated coefficient location. As will be described in more detail below, said coding is performed in a specific scan order that may vary during validity map coding depending on the locations of the valid coefficients identified as valid so far. Additionally, validity map coding involves coding the binary syntax elements last_significant_coeff_flag placed between significant_coeff_flag at those locations, where significant_coeff_flag signals the valid coefficients. If the significant_coeff_flag bin is equal to 0—that is, if a non-zero transformation coefficient level exists at the scanning location—an additional binary syntax element last_significant_coeff_flag is coded. This bin indicates whether the current valid transformation coefficient level is the last valid transformation coefficient level within the block or if additional valid transformation coefficient levels follow in the scanning order. If last_significant_coeff_flag indicates that no additional valid transformation coefficients follow, additional syntax elements are not coded to specify the validity map for the block.Alternatively, the number of valid coefficient positions within the data stream may be signaled prior to the coding of the sequence of significant_coeff_flag. In the next step, the values of the valid transformation coefficient levels are coded. As mentioned above, alternatively, the transmission of levels may be interleaved with the transmission of the validity map. The values of the valid transformation coefficient levels are coded in the additional scanning order, the examples of which are described below. The following three syntax elements are used. The binary syntax element coeff_abs_greater_one indicates whether the absolute value of the valid transformation coefficient level is greater than 1. If the binary syntax element coeff_abs_greater_one indicates that the absolute value is greater than 1, an additional syntax element coeff_abs_level_minus_one is sent, which specifies the value of the transformation coefficient level minus 1. Finally, the binary syntax element coeff_sign_flag, which specifies the sign of the transformation coefficient value for each valid transformation coefficient level, is decoded.
[0050] The embodiments described below enable further reduction of the bit rate, thereby increasing coding efficiency. To do so, these embodiments employ a specific approach for context modeling of syntactic elements related to transformation coefficients. In particular, a new context model selection is used for the syntactic elements significant_coeff_flag, last_significant_coeff_flag, coeff_abs_greater_one, and coeff_abs_level_minus_one. Additionally, adaptive switching of scans during encoding / decoding of the validity map (which specifies the locations of non-zero transformation coefficient levels) is described. Regarding the meaning of the syntactic elements to be mentioned, the above-mentioned introduction of the present invention is referenced.
[0051] The coding of the significant_coeff_flag and last_significant_coeff_flag syntax elements that specify validity maps is improved by a new context modeling based on adaptive scans and defined neighborhoods of already coded scan locations. These new initiatives result in more efficient coding of validity maps (i.e., a corresponding reduction in bit rate), especially for large block sizes.
[0052] One aspect of the embodiments outlined below is that the scan order (i.e., the mapping of blocks of transformation factor values into an ordered set (vector) of transformation factor levels) is adapted during the encoding / decoding of the validity map based on the values of syntax elements that have already been encoded / decoded for the validity map.
[0053] In one preferred embodiment, the scan order is adaptively switched between two or more predefined scan patterns. In one preferred embodiment, the switching may occur only at specific predefined scan locations. In another preferred embodiment of the invention, the scan order is adaptively switched between two predefined scan patterns. In one preferred embodiment, the switching between two predefined scan patterns may occur only at specific predefined scan locations.
[0054] The advantage of switching between scan patterns is a reduced bit rate, which results in fewer coded syntax elements. Referring to FIG. 6 as an easy-to-understand example, it often happens that effective transformation coefficient values are concentrated at one of the block boundaries (270, 272)—especially in large transformation blocks—because the remaining blocks mainly contain horizontal or vertical structures. When using a zig-zag scan (274) that is mainly used, there is about a 0.5 probability that the last diagonal sub-scan of the zig-zag scan, where the last effective coefficients are encountered, starts from the side where the effective coefficients are not concentrated. In that case, a large number of syntax elements for zero-like transformation coefficient levels must be coded before the last non-zero transformation coefficient value is reached. This can be prevented if the sub-scan always starts from the side where the effective transformation coefficient levels are concentrated.
[0055] Further details regarding one preferred embodiment of the present invention are described below.
[0056] As mentioned above, even for large block sizes, it is desirable to keep the number of context models significantly small to enable rapid adaptation of the context models and provide high coding efficiency. Therefore, a specific context must be used for one or more scan locations. However, the approach of assigning the same context to multiple consecutive scan locations, as done for 8×8 blocks in H.264, is generally not suitable because effective transformation factor levels are usually concentrated in specific regions of the transformation blocks (this concentration may be, for example, the result of specific dominant structures usually present in the residual blocks). To design context selection, the observation mentioned above that effective transformation factor levels are often concentrated in specific regions of the transformation blocks can be used. The following describes the approaches in which this observation can be utilized.
[0057] In one preferred embodiment, a large transformation block (e.g., larger than 8×8) is divided into a plurality of rectangular sub-blocks (e.g., 16 sub-blocks), each of which is associated with a separate context model for coding significant_coeff_flag and last_significant_coeff_flag (different context models are used for significant_coeff_flag and last_significant_coeff_flag, respectively). The division into sub-blocks may be different for significant_coeff_flag and last_significant_coeff_flag, respectively. The same context model may be used for all scan locations within a particular sub-block.
[0058] In another preferred embodiment, a large transformation block (e.g., larger than 8×8) may be divided into multiple rectangular and / or non-rectangular subregions, each of which is associated with a separate context model to code the significant_coeff_flag and / or the last_significant_coeff_flag. The division into subregions may differ for the significant_coeff_flag and the last_significant_coeff_flag, respectively. The same context model is used for all scan locations situated within a specific subregion.
[0059] In another preferred embodiment, a context model for coding significant_coeff_flag and / or last_significant_coeff_flag is selected based on symbols already coded in a predefined spatial neighborhood of the current scan location. The predefined neighborhoods may differ for each different scan location. In one preferred embodiment, a context model is selected based on the number of valid transformation coefficient levels in a predefined spatial neighborhood of the current scan location, where only already coded valid indications are included.
[0060] More detailed information regarding one preferred embodiment of the present invention is described below.
[0061] As mentioned above, for large block sizes, conventional context modeling encodes a large number of bins (usually having different probabilities) into a single context model for coeff_abs_greater_one and coeff_abs_level_minus_one syntactic elements. To avoid these drawbacks for large block sizes, according to one embodiment, large blocks may be divided into small square or rectangular sub-blocks of a specific size, and separate context modeling is applied to each sub-block. Additionally, multiple sets of context models may be used, wherein one of these sets of context models is selected for each sub-block based on a statistical analysis of previously coded sub-blocks. In one preferred embodiment of the invention, the number of transformation coefficients greater than 2 (i.e., coeff_abs_level_minus_1 > 1) in previously coded sub-blocks of the same block is used to derive a set of context models for the current sub-block. These improvements for context modeling of coeff_abs_greater_one and coeff_abs_level_minus_one syntactic elements result in more efficient coding of both syntactic elements, particularly at large block sizes. In one preferred embodiment, the block size of a subblock is 2×2. In another preferred embodiment, the block size of a subblock is 4×4.
[0062] In the first step, blocks larger than a predefined size may be distributed into smaller sub-blocks of a specific size. The coding process of absolute transformation coefficient levels maps square or rectangular blocks of sub-blocks into an aligned set (vector) of sub-blocks using a scan, wherein different scans may be used for each different block. In one preferred embodiment, sub-blocks are processed using a zigzag scan, and the transformation coefficient levels within the sub-blocks are processed using an inverse zigzag scan, that is, a scan that loads coefficients associated with the lowest frequencies in both directions, starting from the transformation coefficients belonging to the highest frequencies in the vertical and horizontal directions. In another preferred embodiment of the present invention, an inverse zigzag scan is used to code the sub-blocks and the transformation coefficient levels within the sub-blocks. In another preferred embodiment of the present invention, the very adaptive scan used to code the validity map is used to process the entire block of transformation coefficient levels.
[0063] The distribution of large transformation blocks into sub-blocks prevents the problem of using only one context model for most of the blocks of the large transformation block. Within the sub-blocks, depending on the actual size of the sub-blocks, modern context modeling (as specified in H.264) or fixed context may be used. Furthermore, the statistics for such sub-blocks (in terms of probabilistic modeling) differ from the statistics of transformation blocks of the same size. This property can be utilized by extending the set of context models for coeff_abs_greater_one and coeff_abs_level_minus_one syntactic elements. Multiple sets of context models may be provided, and for each sub-block, one of these sets of context models may be selected based on the statistics of sub-blocks previously coded in the current transformation block or in previously coded transformation blocks. In one preferred embodiment of the present invention, the selected set of context models is derived based on the statistics of sub-blocks previously coded in the same block. In another preferred embodiment of the present invention, the selected set of context models is derived based on the statistics of the same sub-blocks of previously coded blocks. In one preferred embodiment, the number of context model sets is set to 4, while in another preferred embodiment, the number of context model sets is set to 16. In one preferred embodiment, the statistic used to derive the context model set is the number of absolute transformation coefficient levels greater than 2 in the previously coded sub-blocks. In another preferred embodiment, the statistic used to derive the context model set is the difference between the number of effective coefficients and the number of transformation coefficient levels having an absolute value greater than 2.
[0064] The coding of the validity map can be performed as outlined below, that is, by adaptive switching of the scan order.
[0065] In one preferred embodiment, the scanning order for coding the validity map is adapted by switching between two predefined scan patterns. Switching between scan patterns may be performed only at specific predefined scan locations. The determination of whether a scanning pattern has been switched is based on the already coded / decoded validity map syntax elements. In one preferred embodiment, both predefined scanning patterns specify scanning patterns having diagonal sub-scans similar to the scanning pattern of a zigzag scan. The scan patterns are illustrated in FIG. 8. The scanning patterns (300 and 302) consist of multiple diagonal sub-scans for diagonals from the lower left to the upper right or vice versa. Scanning of the diagonal sub-scans (not illustrated in the drawing) is performed from the upper left to the lower right for both predefined scanning patterns. However, scanning within the diagonal sub-scans is different (as illustrated in the drawing). In the first scanning pattern (300), the diagonal sub-scan is scanned from the lower left to the upper right (left diagram of FIG. 8), and in the second scanning pattern (302), the diagonal sub-scan is scanned from the upper right to the lower left (right diagram of FIG. 8). In one embodiment, the coding of the validity map begins with the second scanning pattern. While coding / decoding the syntax elements, the number of valid conversion coefficient values is counted by two counters (c1 and c2). The first counter (c1) counts the number of valid conversion coefficients located in the lower left part of the conversion block; that is, when a valid conversion coefficient level where the horizontal coordinate (x) within the conversion block is less than the vertical coordinate (y) is coded / decoded, this counter is incremented by 1. The second counter (c2) counts the number of valid conversion coefficients located in the upper right part of the conversion block; That is, when an effective transformation factor level in which the horizontal coordinate (x) within the transformation block is greater than the vertical coordinate (y) is coded / decoded, this counter is increased by 1.Adaptation of the counters can be performed by the associator (252) in FIG. 7 and can be described by the following formulas, where t specifies the scan position index and both counters are initialized to 0:.
[0066]
[0067]
[0068] At the end of each diagonal sub-scan, the association (252) determines whether the first or second predetermined scanning patterns (300, 302) are used for the next diagonal sub-scan. This determination is based on the values of the counters (c1 and c2). When the counter for the lower left portion of the transformation block is greater than the counter for the lower left portion, a scanning pattern that scans the diagonal sub-scan from the lower left to the upper right is used; otherwise (when the counter for the lower left portion of the transformation block is less than or equal to the counter for the lower left portion), a scanning pattern that scans the diagonal sub-scan from the upper right to the lower left is used. This determination can be expressed by the following formula:
[0069]
[0070] It should be noted that the embodiments of the present invention described above can be easily applied to other scanning patterns. As an example, the scanning pattern used for field macroblocks in H.264 can also be broken down into subscans. In another preferred embodiment, a given but arbitrary scanning pattern is broken down into subscans. For each subscan, two scanning patterns are defined: one from bottom left to top right and one from top right to bottom left (as the primary scanning direction). Additionally, two counters are introduced within the subscan to count the number of valid coefficients in a first part (near the bottom left boundary of the transformation blocks) and a second part (near the top right boundary of the transformation blocks). Finally, at the end of each subscan, it is determined whether the next subscan will be scanned from bottom left to top right or from top right to bottom left (based on the values of the counters).
[0071] In the following, embodiments regarding how the entropy decoder (250) models contexts are presented.
[0072] In one preferred embodiment, context modeling for significant_coeff_flag is performed as follows. For 4×4 blocks, context modeling is performed as specified in H.264. For 8×8 blocks, the transformation block is decomposed into 16 sub-blocks of 2×2 samples, each of which is associated with separate contexts. This concept can also be extended to larger block sizes, different numbers of sub-blocks, and non-rectangular sub-regions as described above.
[0073] In another preferred embodiment, the selection of a context model for large transformation blocks (e.g., blocks larger than 8×8) is based on the number of already coded effective transformation coefficients within predefined neighborhoods (within the transformation block). An example of the definition of neighborhoods corresponding to a preferred embodiment of the present invention is illustrated in FIG. 9. Cross symbols with circles around them are available neighborhoods that are always considered for evaluation, and cross symbols with triangles are neighborhoods evaluated according to the current scan position and the current scan direction:
[0074] ● If the current scan location is within the 2×2 left corner (304), a separate context model is used for each scan location (left diagram in FIG. 9).
[0075] ● If the current scan position is not within the 2×2 left corner and is not located on the first row or first column of the transformation block, then the neighbors shown on the right in FIG. 9 are used to evaluate the number of effective change coefficients within the neighborhood of the current scan position "x" that has nothing around it.
[0076] ● If the current scan position "x", which has nothing around it, comes into the first row of the transformation block, then the neighbors specified in the right diagram of FIG. 10 are used.
[0077] ● If the current scan position "x" comes into the first column of the above block, then the neighbors specified in the left drawing of FIG. 10 are used.
[0078] In other words, the decoder (250) may be configured to continuously extract valid map syntax elements by context-adaptive entropy decoding using contexts individually selected for each valid map syntax element according to multiple locations located according to previously extracted and associated valid map syntax element valid transformation coefficients, wherein the locations are limited to being neighbors of the location associated with each current valid map syntax element (the "x" in both the right side of FIG. 9 and FIG. 10, and any marked portions on the left side of FIG. 9). As illustrated, the neighbors of the location associated with each current syntax element may include only, at most, locations directly adjacent to or independent of the location where each valid map syntax element is associated in a vertical direction and / or a horizontal direction at one location. Alternatively, only locations directly adjacent to each current syntax element may be considered. At the same time, the size of the transformation coefficient block may be equal to or greater than 8×8 locations.
[0079] In one preferred embodiment, the context model used to code a specific significant_coeff_flag is selected based on the number of valid transformation coefficient levels already coded within defined neighborhoods. Here, the number of available context models may be smaller than the possible value for the number of valid transformation coefficient levels within defined neighborhoods. The encoder and decoder may contain a table (or a different mapping mechanism, respectively) for mapping the number of valid transformation coefficient levels within defined neighborhoods to context model indices.
[0080] In another preferred embodiment, a selected context model index is determined according to one or more additional parameters, such as the number of effective transformation coefficient levels within a defined neighborhood and the form of the neighborhood or scan location used or the quantized value of the scan location.
[0081] For coding last_significant_coeff_flag, context modeling similar to that for significant_coeff_flag may be used. However, the probability degree for last_significant_coeff_flag is primarily determined by the interval of the current scan position relative to the upper left corner of the transformation block. In one preferred embodiment, a context model for coding last_significant_coeff_flag is selected based on the scan diagonal where the current scan position is located (i.e., in the case of the above embodiment of FIG. 8, it is selected based on x + y, where x and y represent the horizontal and vertical positions of the scan position within the transformation block, respectively, or based on how many sub-scans there are between the current sub-scan and the upper left DC position (such as sub-scan minus 1)). In a preferred embodiment of the present invention, the same context is used for each different value of x + y. The interval degree, i.e., x + y or subscan index, is mapped to a set of context models in a specific way (e.g., by quantizing the x + y or subscan index), where the number of possible values for the interval degree is greater than the number of context models available to code last_significant_coeff_flag.
[0082] In one preferred embodiment, different context modeling techniques are used for each different size of transformation blocks.
[0083] The coding of the absolute transformation coefficient levels is described below.
[0084] In one preferred embodiment, the size of the subblocks is 2×2 and context modeling within the subblocks is not possible, that is, a single context model is used for all transformation coefficients within the 2×2 subblocks. Only blocks larger than 2×2 can be affected by sub-distribution processing. In another preferred embodiment of the invention, the size of the subblocks is 4×4 and context modeling within the subblocks is performed as in H.254; only blocks larger than 4×4 are affected by sub-distribution processing.
[0085] Regarding the scanning order, in one preferred embodiment, a zigzag scan (320) is used to scan the sub-blocks (322) of the transformation block (256), that is, along the direction of substantially increasing frequency, while the transformation coefficients within the sub-blocks are scanned by an inverse zigzag scan (326) (Fig. 11). In another preferred embodiment of the invention, the sub-blocks (322) and the transformation coefficient levels within the sub-blocks (322) are scanned using an inverse zigzag scan (as illustrated in Fig. 11, where the arrow (320) is reversed). In yet another preferred embodiment, the same adaptive scan used for coding the validity map is used to process the transformation coefficient levels, wherein the adaptive decision is identical so that exactly the same scan is used for both the coding of the validity map and the coding of the transformation coefficient level values. It should be noted that the scan itself is not usually determined by the number of selected statistics or context model sets or by the decision to enable or disable context modeling within the sub-blocks.
[0086] Next, examples for context modeling of coefficient levels are described.
[0087] In one preferred embodiment, context modeling for a sub-block is similar to context modeling for 4×4 blocks in H.264 as described above. For example, the number of context models used to code the first bins of the coeff_abs_greater_one syntax element and the coeff_abs_level_minus_one syntax element, using different sets of context models for each of the two syntax elements, is 5. In another preferred embodiment, context modeling within a sub-block is not possible, and only one predefined context model is used within each sub-block. In both embodiments, the set of context models for a sub-block (322) is selected from a plurality of predefined sets of context models. The selection of the set of context models for a sub-block (322) is based on specific statistics of one or more already coded sub-blocks. In one preferred embodiment, the statistics used to select the set of context models for a context sub-block are taken from one or more already coded sub-blocks within the same block (256). How statistics are used to derive a selected set of context models is described below. In another preferred embodiment, statistics are taken from the same sub-blocks within a previously coded block having the same block size, such as blocks 40a and 40a' in FIG. 2b. In yet another preferred embodiment of the invention, statistics are taken from defined neighboring sub-blocks within the same block, which are determined by the scans selected for the sub-blocks. Additionally, it is important to note that the statistics source must be independent of the scan order and how the statistics are generated to derive a set of context models.
[0088] In one preferred embodiment, the number of context model sets is equal to 4, while in another preferred embodiment, the number of context model sets is equal to 16. Generally, the number of context model sets is not fixed and should be adapted according to selected statistics. In one preferred embodiment, the context model set for a sub-block (322) is derived based on the number of absolute transformation coefficient levels greater than 2 in one or more already coded sub-blocks. An index for the context model set is determined by mapping the number of absolute transformation coefficient levels greater than 2 in the reference sub-block or reference sub-blocks to a predefined set of context model indices. This mapping may be implemented by quantizing the number of absolute transformation coefficient levels greater than 2 or by a predefined table. In another preferred embodiment, the context model set for a sub-block is derived based on the difference between the number of effective transformation coefficient levels and the number of absolute transformation coefficient levels greater than 2 in one or more already coded sub-blocks. An index for the context model set is determined by mapping this difference to a predefined set of context model indices. This mapping can be implemented by quantizing the difference between the number of effective transformation factor levels and the number of absolute transformation factor levels greater than 2, or by predefined tables.
[0089] In another preferred embodiment, when the same adaptive scan is used to process absolute transformation coefficient levels and validity maps, partial statistics of sub-blocks within the same blocks may be used to derive a context model set for the current sub-block, or, if available, statistics of previously coded sub-blocks within previously coded transformation blocks may be used. This means, for example, that instead of using the absolute number of absolute transformation coefficient levels greater than 2 in the sub-block(s) to derive the context model, the number of already coded absolute transformation coefficient levels greater than 2, which is the product of the number of transformation coefficients in the sub-block(s) and the ratio of already coded transformation coefficients in the sub-block(s); or instead of using the difference between the number of valid transformation coefficient levels and the number of absolute transformation coefficient levels greater than 2 in the sub-block(s), the difference between the number of already coded valid transformation coefficient levels and the number of already coded absolute transformation coefficient levels greater than 2, which is the product of the number of transformation coefficients in the sub-block(s) and the ratio of already coded transformation coefficients in the sub-block(s).
[0090] For context modeling within sub-blocks, the inverse of modern context modeling for H.264 may be used. This means that when the same adaptive scan is used to process absolute transform factor levels and validity maps, the transform factor levels are coded in forward scan order by default, instead of the inverse scan order as in H.264. Therefore, context model switching must be adapted accordingly. According to one embodiment, coding of transform factor levels starts with a first context model for coeff_abs_greater_one and coeff_abs_level_minus_one syntactic elements, and switches to the next context model in the set when two coeff_abs_greater_one syntactic elements equal to 0 are coded after the last context model switching. In other words, context selection is determined by the number of already coded coeff_abs_greater_one syntactic elements greater than 0 in the scan order. The number of context models for coeff_abs_greater_one and for coeff_abs_level_minus_one can be the same as in H.264.
[0091] Therefore, the above embodiments can be applied to the field of digital signal processing, particularly to image and video decoders and encoders. In particular, the above embodiments enable the coding of syntactic elements related to transform coefficients in block-based image and video codecs, along with improved context modeling of syntactic elements related to transform coefficients coded by an entropy coder utilizing probabilistic modeling. Compared to the latest technology, improved coding efficiency is achieved, particularly for large transformation blocks.
[0092] Although some aspects have been described in the context of a device, it is evident that these aspects also represent descriptions of the corresponding method, where the block or device corresponds to a method step or a feature of the method step. Similarly, aspects described in the context of a method step also represent descriptions of the corresponding block or item and the feature of the corresponding device.
[0093] Each encoded signal of the present invention for representing a conversion block or validity map may be stored in a digital storage medium or transmitted to a transmission medium such as a wireless transmission medium or a wired transmission medium, such as the Internet.
[0094] Depending on specific implementation requirements, embodiments of the invention may be implemented in hardware or software. Such implementation may be performed using a digital electronic medium having electronically readable control signals stored thereon, such as a floppy disk, DVD, Blu-ray, CD, ROM, PROM, EPROM, EEPROM, or flash memory, which cooperates (or is capable of cooperating) with a programmable computer system to perform each of the methods. Therefore, the digital storage medium may be computer-readable.
[0095] Some embodiments according to the invention include a non-transient or tangible data carrier having electronically readable control signals capable of cooperating with a programmable computer system so that one of the methods described herein is performed.
[0096] Generally, embodiments of the present invention may be implemented as a computer program product having program code, said program code is operated to perform one of the methods when said computer program product is run on a computer. said program code may be stored, for example, in a machine-readable carrier.
[0097] Other embodiments include a computer program for performing one of the methods described herein, stored in a machine-readable carrier.
[0098] In other words, therefore, one embodiment of the method of the above invention is a computer program having program code for performing one of the methods described herein when the computer program is run on a computer.
[0099] Therefore, another embodiment of the methods of the above invention is a data carrier (or digital storage medium, or computer-readable medium) comprising a computer program for performing one of the methods described herein, recorded thereon.
[0100] Therefore, another embodiment of the method of the above invention is a sequence of data streams or signals representing a computer program for performing one of the methods described herein. For example, the data stream or sequence of signals may be configured to be transmitted over a data communication connection, for example, the Internet.
[0101] Other embodiments include processing means configured or adapted to perform one of the methods described herein, such as a computer or a programmable logic device.
[0102] Another embodiment includes a computer on which a computer program for performing one of the methods described herein is installed.
[0103] In some embodiments, a programmable logic device (e.g., a field-programmable gate array) may be used to perform some or all of the functions of the methods described herein. In some embodiments, the field-programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. Generally, preferably, the methods are performed with any hardware device.
[0104] The embodiments described above are merely examples of the principles of the invention. Modifications and variations of the arrangements and details described herein will be understood to those skilled in the art. Therefore, it is intended that the invention is limited only by the scope of the claims to come, and not by the specific details presented in the description and explanation of the embodiments herein.
[0106] This divisional application describes the first claim of the basic application as an example below.
[0107] [Example 1]
[0108] In an apparatus for decoding a validity map indicating the locations of valid conversion coefficients within a conversion coefficient block from a data stream,
[0109] A decoder (250) configured to continuously extract first type syntax elements from the data stream indicating, at least, whether a valid or invalid conversion coefficient is located at each of the associated positions within the conversion coefficient block (256); and
[0110] An associator (252) configured to continuously associate first type syntax elements extracted consecutively to the locations of the conversion coefficient blocks in a scan order between the locations of the conversion coefficient blocks, determined according to the locations of the valid conversion coefficients indicated by the previously extracted and associated first type syntax elements;
[0111] An apparatus for decoding a validity map characterized by including
[0113] [Example 2]
[0114] In Example 1,
[0115] A device for decoding a validity map, characterized in that the decoder (250) is further configured to recognize whether the last valid conversion coefficient within the conversion coefficient block is located at a location associated with a currently extracted first type syntax element, which indicates that a valid conversion coefficient is located at this location, separate from a plurality of locations of invalid conversion coefficients indicated by the previously extracted and associated first type syntax elements.
[0117] [Example 3]
[0118] In Example 1 or 2,
[0119] The above decoder (250) is further configured to extract between first syntax elements indicating that a valid conversion factor is located at each of the respective associated locations, and second type syntax elements from a bit stream indicating the associated locations where a valid conversion factor is located, immediately following the first type syntax elements, regarding whether each associated location is the last valid conversion factor within the conversion factor block.
[0121] [Example 4]
[0122] In any one of Examples 1 to 3,
[0123] The above decoder (250) is further configured to continuously extract the values of inter-valid transformation coefficients within the transformation coefficient block from the data stream by context-adaptive entropy decoding, after the extraction of all first type syntax elements of the transformation coefficient block, and
[0124] The above association unit (252) is configured to continuously associate the continuously extracted values with the locations of the valid transformation coefficients in a predetermined coefficient scan order between the locations of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the sub-blocks (322) of the transformation coefficient block (256) using the sub-block scan order (320) along with the scanning of the locations of the transformation coefficients within the sub-blocks (322) in a secondary location sub-scan order (324).
[0125] An apparatus for decoding a validity map, wherein the decoder is configured to use a set of multiple contexts selected from a set of multiple contexts when continuously decoding the values of the valid conversion coefficient values in context-adapted entropy, and the selection of the selected set is performed for each sub-block according to the values of the conversion coefficients within the sub-block of the conversion coefficient block that has already been traversed in the sub-block scan order (320), or the values of the conversion coefficients of the sub-block placed in the same location within the previously decoded conversion coefficient block of the same size.
[0127] [Example 5]
[0128] In any one of Examples 1 to 4,
[0129] The above decoder (250) is configured to continuously extract the first type syntactic elements by context-adaptive entropy decoding using contexts individually selected for each of the first type syntactic elements according to a plurality of locations where valid transformation coefficients are located according to the previously extracted and associated first type syntactic elements near the location where each of the first type syntactic elements are associated.
[0131] [Example 6]
[0132] In Example 5,
[0133] The above decoder is further configured such that the vicinity of the positions to which each of the first type syntax elements are associated includes only positions directly adjacent to the positions to which each of the first type syntax elements are associated at most, in the vertical direction and / or in the horizontal direction, or positions that are directly adjacent or separate.
[0134] An apparatus for decoding a validity map characterized in that the size of the above-mentioned conversion factor block is equal to or greater than the 8×8 positions.
[0136] [Example 7]
[0137] In Example 5 or 6,
[0138] An apparatus for decoding a validity map, characterized in that the decoder is further configured to map a plurality of locations, where valid transformation coefficients are located according to the previously extracted and associated first type syntactic elements, near the locations where each of the first type syntactic elements are associated, to one context index among a set of possible context indices determined by weight using a plurality of available locations near the locations where each of the first type syntactic elements are associated.
[0140] [Example 8]
[0141] In any one of Examples 1 to 7,
[0142] The above association (252) is further configured to continuously associate the continuously extracted first type syntax elements with the locations of the transformation coefficient block along a sequence of subpaths extending between a first pair of adjacent sides of the transformation coefficient block where the lowest frequency locations in the horizontal direction and the lowest frequency locations in the vertical direction are each located, and a second pair of adjacent sides of the transformation coefficient block where the lowest frequency locations in the vertical direction and the highest frequency locations in the horizontal direction are each located, with subpaths having increasing intervals from the lowest frequency locations in both vertical and horizontal directions.
[0143] An apparatus for decoding a validity map, characterized in that the above association unit (252) is configured to determine the direction (300, 302) in which the continuously extracted first type syntax elements are associated with the locations of the transformation coefficient blocks based on the locations of the valid transformation coefficients within the previous sub-scan.
[0145] [Example 9]
[0146] In an apparatus for decoding a validity map indicating the locations of valid conversion coefficients within a conversion coefficient block from a data stream,
[0147] A decoder (250) configured to continuously extract from the data stream by context-adaptive entropy decoding first type syntax elements indicating whether a valid or invalid transformation coefficient is located at each of the associated locations within the transformation coefficient block, wherein the valid map indicates the locations of valid transformation coefficients within the transformation coefficient block from the data stream, and then extracts the values of the valid transformation coefficients within the transformation coefficient block, together with, when extracting the valid map, first type syntax elements indicating whether a valid or invalid transformation coefficient is located at each location for the associated locations within the transformation coefficient block; and
[0148] An associator (250) configured to sequentially associate the sequentially extracted first type syntax elements with the locations of the conversion coefficient blocks in a predetermined scan order between the locations of the conversion coefficient blocks;
[0149] Includes,
[0150] An apparatus for decoding a validity map, characterized in that the decoder is configured to use contexts individually selected for each of the first type syntactic elements according to a plurality of locations where valid transformation coefficients are located near where the current first type syntactic element is located, according to the previously extracted and associated first type syntactic elements when adaptively entropy decoding the first type syntactic elements in context.
[0152] [Example 10]
[0153] In Example 9,
[0154] The above decoder (250) is further configured such that the vicinity of the location to which each of the first type syntax elements are associated includes only the location directly adjacent to the location to which each of the first type syntax elements are associated in a maximum vertical direction and / or a horizontal direction, or the location directly adjacent or separate.
[0155] An apparatus for decoding a validity map characterized in that the size of the above-mentioned conversion factor block is equal to or greater than the 8×8 positions.
[0157] [Example 11]
[0158] In Example 9 or 10,
[0159] An apparatus for decoding a validity map, characterized in that the decoder (250) is further configured to map to one of a set of possible context indices determined by weighting each first type syntax element to a plurality of available locations near the location where each first type syntax element is associated, the plurality of locations where valid transformation coefficients are located according to the previously extracted and associated first type syntax elements.
[0161] [Example 12]
[0162] A validity map indicating the locations of valid transformation coefficients within the transformation coefficient block from a data stream, and a decoder (250) configured to extract the values of the valid transformation coefficients within the transformation coefficient block, and together with, when extracting the values of the valid transformation coefficients, continuously extract the values by context-adaptive entropy decoding; and
[0163] An association (252) configured to continuously associate the continuously extracted values with the positions of effective transformation coefficients in a predetermined coefficient scan order among the positions of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the subblocks (322) of the transformation coefficient block (256) using the subblock scan order (320), along with scanning the positions of the transformation coefficients within the subblocks according to the incidental position sub-scan order (324);
[0164] Includes,
[0165] The above decoder (250) is configured to use a set of multiple contexts selected from a set of multiple contexts when continuously decoding the values of the effective conversion coefficient values in context-adapted entropy, wherein the selection of the selected set is performed for each sub-block according to the values of the conversion coefficients within the sub-block of the conversion coefficient block that have already been traversed in the sub-block scan order, or the values of the conversion coefficients of the sub-block placed in the same location within the previously decoded conversion coefficient block of the same size.
[0167] [Example 13]
[0168] In Example 12,
[0169] The above decoder is configured such that a majority of the sets of multiple contexts are greater than 1, and
[0170] An apparatus for decoding a transformation coefficient block, characterized in that, when continuously decoding the values of the effective transformation coefficient values within a sub-block using a set of multiple contexts selected for each sub-block, the contexts of the set of multiple contexts selected are uniquely assigned to locations within each sub-block.
[0172] [Example 14]
[0173] In Example 12 or 13,
[0174] The above-mentioned association (252) is a device for decoding a conversion coefficient block, characterized in that the sub-block scan order is zigzag-wise from a sub-block containing the lowest frequency position in the vertical and horizontal directions to a sub-block containing the highest frequency position in both the vertical and horizontal directions, while the position sub-scan order is zigzag-wise from a position within each sub-block associated with the highest frequency in the vertical and horizontal directions to a position within each sub-block associated with the lowest frequency in both the vertical and horizontal directions.
[0176] [Example 15]
[0177] A transform-based decoder configured to decode a transform coefficient block using a device (150) for decoding a valid map indicating the locations of valid transform coefficients within a transform coefficient block from a data stream according to any one of embodiments 1 to 11, and to perform a transform from a spectral domain to a spatial domain for said transform coefficient block (152).
[0179] [Example 16]
[0180] According to any one of embodiments 1 to 11, a transform-based decoder (150, 152) configured to decode a transform coefficient block using a device for decoding a validity map indicating the locations of valid transform coefficients within a transform coefficient block from a data stream, and to perform a transformation from the spectral domain to the spatial domain for said transform coefficient block to obtain a residual block;
[0181] A predictor (156) configured to provide a prediction for a block of an array of information samples representing a spatially sampled information signal; and
[0182] A combiner (154) configured to combine the prediction of the block and the remaining block to restore the array of the information samples above;
[0183] A prediction decoder characterized by including
[0185] [Example 17]
[0186] In an apparatus for encoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block into a data stream,
[0187] The device is configured to continuously code into the data stream by entropy encoding first type syntax elements indicating, for at least, whether valid or invalid conversion coefficients are located at each location, for associated locations within the conversion coefficient blocks.
[0188] A device for encoding a validity map, characterized in that the device is further configured to continuously code the first type syntax elements into the data stream in a scan order between the locations of the conversion blocks, which are determined according to the locations of the valid conversion coefficients indicated by the previously coded first type syntax elements.
[0190] [Example 18]
[0191] In an apparatus for encoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block into a data stream,
[0192] The device is configured to include a validity map indicating the locations of valid transformation coefficients within the transformation coefficient block, and then to code the values of the valid transformation coefficients within the transformation coefficient block into the data stream, and together with, when coding the validity map, to continuously code into the data stream by context-adaptive entropy encoding first type syntax elements indicating whether valid or invalid transformation coefficients are located at each of the associated locations within the transformation coefficient block.
[0193] The device is further configured to continuously code the first type syntax elements into the data stream in a predetermined scan order between the positions of the conversion coefficient blocks, and
[0194] The above device is configured to use contexts individually selected for the first type syntactic elements according to a plurality of locations associated with previously coded first type syntactic elements, wherein, when adaptively entropy encoding each of the first type syntactic elements in context, valid transformation coefficients are located near the location associated with the current first type syntactic elements.
[0196] [Example 19]
[0197] An apparatus for encoding a transformation coefficient block, comprising: a validity map indicating the locations of valid transformation coefficients within the transformation coefficient block; and then coding the values of the valid transformation coefficients within the transformation coefficient block into the data stream, and together with, when extracting the values of the valid transformation coefficients, continuously coding the values by context-adaptive entropy encoding.
[0198] The above device is configured to code the values into the data stream in a predetermined coefficient scan order between the positions of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the subblocks of the transformation coefficient blocks using a subblock scan order, together with scanning the positions of the transformation coefficients within the subblocks in a secondary position sub-scan order.
[0199] The device for encoding a transformation coefficient block is further configured to use a set of multiple contexts selected from a set of multiple contexts when entropy encoding the values of the effective transformation coefficient values in a context-adapted sequence, wherein the selection of the selected set is performed for each sub-block according to the values of the transformation coefficients within the sub-block of the transformation coefficient block that have already been traversed according to the sub-block scan order (32), or the values of the transformation coefficients of the sub-block placed in the same location within a previously encoded transformation coefficient block of the same size.
[0201] [Example 20]
[0202] A method for decoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block from a data stream,
[0203] For associated locations within the conversion coefficient block, at least, a step of continuously extracting first type syntax elements from the data stream indicating whether a valid or invalid conversion coefficient is located at each location; and
[0204] A step of continuously associating first syntactic elements extracted consecutively to the locations of the transformation coefficient blocks in a scan order among the locations of the transformation coefficient blocks, determined according to the locations of valid transformation coefficients indicated by previously extracted and associated first type syntactic elements;
[0205] A method for decoding a validity map characterized by including
[0207] [Example 21]
[0208] A method for decoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block from a data stream,
[0209] A validation map indicating the locations of valid transformation coefficients within the transformation coefficient block from a data stream, and then extracting the values of the valid transformation coefficients within the transformation coefficient block, and together with, when the validation map is extracted, continuously extracting first type syntax elements from the data stream by context-adaptive entropy decoding that indicate whether valid or invalid transformation coefficients are located at each of the associated locations within the transformation coefficient block; and
[0210] A step of continuously associating first type syntax elements extracted consecutively to the locations of the transformation coefficient blocks in a predetermined scan order among the locations of the transformation coefficient blocks;
[0211] Includes,
[0212] A method for decoding a validity map characterized by using contexts individually selected for each of the first type syntactic elements according to a plurality of locations where valid transformation coefficients are located according to previously extracted and associated first type syntactic elements near the locations where the current first type syntactic elements are associated, when adaptively entropy decoding the first type syntactic elements in context.
[0214] [Example 22]
[0215] A validity map indicating the locations of valid transformation coefficients within a transformation coefficient block from a data stream, and then extracting the values of the valid transformation coefficients within the transformation coefficient block, and together with, when extracting the values of the valid transformation coefficients, continuously extracting the values by context-adaptive entropy decoding; and
[0216] A step of continuously associating continuously extracted values with the locations of valid transformation coefficients in a predetermined coefficient scan order among the locations of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the sub-blocks of the transformation coefficient block using the sub-block scan order, together with scanning the locations of transformation coefficients within the sub-blocks in a secondary, sub-scan order;
[0217] Includes,
[0218] A method for decoding a transformation coefficient block, characterized in that, when continuously decoding the values of the effective transformation coefficient values in context-adapted entropy, a set of multiple contexts selected from a plurality of sets of multiple contexts is used, wherein the selection of the selected set is performed for each sub-block according to the values of transformation coefficients within the sub-block of the transformation coefficient block that have already been traversed in the sub-block scan order, or the values of transformation coefficients of a sub-block placed in the same location within a previously decoded transformation coefficient block of the same size.
[0220] [Example 23]
[0221] A method for encoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block into a data stream,
[0222] A step of coding the first syntax elements into the data stream in a scan order among the locations of the conversion coefficient block, determined according to the locations of the valid conversion coefficients indicated by the previously coded first type syntax elements, and a step of continuously coding the first type syntax elements into the data stream by entropy decoding, at least, for the associated locations within the conversion coefficient block, the first type syntax elements indicating whether valid or invalid conversion coefficients are located at each location;
[0223] A method for encoding a validity map characterized by including
[0225] [Example 24]
[0226] A method for encoding a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block into a data stream,
[0227] A validation map indicating the locations of valid transformation coefficients within the transformation coefficient block in the data stream, and then coding the values of the valid transformation coefficients within the transformation coefficient block, and together with, when coding the validation map, continuously coding first type syntax elements indicating whether valid or invalid transformation coefficients are located at each of the associated locations within the transformation coefficient block by context-adaptive entropy encoding into the data stream;
[0228] Includes,
[0229] A method for encoding a validity map characterized in that the step of continuously coding the first type syntax elements into the data stream is performed in a predetermined scan order between the locations of the transformation coefficient blocks, and when adaptively entropy-encoding each of the first type syntax elements into the context, contexts individually selected for the first type syntax elements are used according to a plurality of locations where valid transformation coefficients are located near the location where the current first type syntax elements are associated and previously coded first type syntax elements are associated.
[0231] [Example 25]
[0232] A validity map indicating the locations of valid transformation coefficients within a transformation coefficient block, and then coding the values of the valid transformation coefficients within the transformation coefficient block into a data stream, and together with, during the coding of the values of the valid transformation coefficients, continuously coding the values by context-adaptive entropy coding;
[0233] Includes,
[0234] The step of coding the above value into the data stream is performed in a predetermined coefficient scan order among the locations of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the subblocks of the transformation coefficient block using a subblock scan order along with scanning the locations of the transformation coefficients within the subblocks in an incidental location sub-scan order.
[0235] A method for encoding a transformation coefficient block, characterized in that, when entropy encoding the values of the above-mentioned effective transformation coefficient values in a context-adapted manner, a set of multiple contexts selected from a plurality of multiple sets of contexts is used, wherein the selection of the selected set is performed for each sub-block according to the values of the transformation coefficients within the sub-block of the transformation coefficient block that have already been traversed in the sub-block scan order, or the values of the transformation coefficients of the sub-block placed in the same location within a previously encoded transformation coefficient block of the same size.
[0237] [Example 26]
[0238] In a data stream encoded therein, a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block,
[0239] For associated locations within the above-mentioned conversion coefficient block, at least, first type syntax elements indicating whether a valid or invalid conversion coefficient is located at each location are continuously coded into the data stream by entropy encoding, and
[0240] A data stream in which a validity map is encoded, characterized in that the first type syntax elements are coded into the data stream in a scan order between the positions of the conversion coefficient blocks, which are determined according to the positions of the valid conversion coefficients indicated by the previously coded first type syntax elements.
[0242] [Example 27]
[0243] In a data stream encoded therein, a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block,
[0244] A validity map indicating the locations of effective transformation coefficients within the transformation coefficient block, followed by the values of the effective transformation coefficients within the transformation coefficient block, is coded into the data stream, and
[0245] First type syntax elements indicating whether a valid or invalid transformation coefficient is located at each respective location for associated locations within the transformation coefficient block in the validity map are continuously coded into the data stream by context-adaptive entropy encoding, and
[0246] A data stream in which a validity map is encoded, characterized in that the first type syntax elements are continuously coded into the data stream in a predetermined scan order between the locations of the transformation coefficient blocks, and the first type syntax elements are adaptively entropized into the context of the data stream using contexts individually selected for the first type syntax elements according to a plurality of locations where valid transformation coefficients are located near the location to which the current first type syntax elements are associated, and the previous first type syntax elements coded into the data stream are associated.
[0248] [Example 28]
[0249] In a data stream comprising coding of a validity map indicating the locations of valid transformation coefficients within a transformation coefficient block, followed by the values of valid transformation coefficients within the transformation coefficient block,
[0250] The values of the above effective transformation coefficients are continuously encoded into the data stream by context-adaptive entropy encoding in a predetermined coefficient scan order between the positions of the transformation coefficient blocks, depending on which transformation coefficient block is scanned in the subblocks of the transformation coefficient block using the subblock scan order, along with scanning the positions of the transformation coefficients within the subblocks in an incidental position sub-scan order.
[0251] A data stream comprising coding of a validity map, characterized in that the values of the valid transformation coefficients are entropily encoded in the data stream by continuously adapting to the context using a set of multiple contexts selected from a set of multiple contexts, wherein the selection of the selected set is performed for each sub-block according to the values of the transformation coefficients within the sub-block of the transformation coefficient block that has already been traversed in the sub-block scan order (32), or the values of the transformation coefficients of the sub-block placed in the same location within a previously encoded transformation coefficient block of the same size.
[0253] [Example 29]
[0254] A computer-readable digital storage medium having a computer program having program code for performing a method according to any one of embodiments 23 to 25 when run on a computer.
Claims
Claim 1 An apparatus for decoding a data stream representing an encoded video, wherein the apparatus comprises: a decoder configured to extract, from a data stream based on context-adaptive entropy decoding, a first type syntactic element and a second type syntactic element, both of which are associated with a transform factor block, wherein each of the first type syntactic elements indicates whether a valid transform factor exists at each position of the first type syntactic element within the transform factor block, and each of the second type syntactic elements is associated with the value of the valid transform factor at each position of the second type syntactic element within the transform factor block; and an associator configured to associate the first type syntactic element with each position within the transform factor block in a scan order, wherein the decoder is configured to use a context selected for each of the first type syntactic elements during context-adaptive entropy decoding of the first type syntactic element, and the context for the current first type syntactic element being decoded is selected according to the scan order and the transform block size. Claim 2 A device according to claim 1, wherein the data stream comprises at least a portion associated with a color sample. Claim 3 A device according to claim 1, wherein the data stream comprises at least a portion associated with a depth value related to a depth map. Claim 4 A device for encoding a video into a data stream, wherein the device comprises: an encoder configured to encode a first type syntactic element and a second type syntactic element, each of which is associated with a transform factor block, based on context-adaptive entropy encoding, wherein each of the first type syntactic elements indicates whether a valid transform factor exists at each position of the first type syntactic element within the transform factor block, and each of the second type syntactic elements is associated with the value of the valid transform factor at each position of the second type syntactic element within the transform factor block, and wherein the encoder is configured to use a context selected for the first type syntactic elements when context-adaptive entropy encoding each of the first type syntactic elements in a scan order, and the context for the current first type syntactic element being encoded is selected according to the scan order and the transform block size. Claim 5 In paragraph 4, the device wherein the data stream comprises at least a portion associated with a color sample. Claim 6 In paragraph 4, the device wherein the data stream comprises at least a portion associated with a depth value related to a depth map. Claim 7 A method for decoding a data stream representing an encoded video, wherein the method comprises: extracting a first type syntactic element and a second type syntactic element from a data stream based on context-adaptive entropy decoding, wherein both syntactic element types are associated with a transform factor block, wherein each of the first type syntactic elements indicates whether an effective transform factor exists at each location associated with the first type syntactic element within the transform factor block, and each of the second type syntactic elements is associated with the value of the effective transform factor at each location associated with the second type syntactic element within the transform factor block; and associating the first type syntactic elements with each location within the transform factor block in a scan order, wherein the context-adaptive entropy decoding of the first type syntactic elements includes using a context selected for each of the first type syntactic elements, and the context for the current first type syntactic element being decoded is selected according to the scan order and the transform block size. Claim 8 In claim 7, the method wherein the data stream comprises at least a portion associated with a color sample. Claim 9 In claim 7, the method wherein the data stream comprises at least a portion associated with a depth value related to a depth map. Claim 10 A non-transient computer-readable medium for storing data associated with a video, comprising: a data stream stored in the non-transient computer-readable medium, wherein the data stream comprises a first type syntactic element and a second type syntactic element, each of which is associated with a transformation factor block, wherein each of the first type syntactic elements indicates whether an effective transformation factor exists at each location associated with the first type syntactic element within the transformation factor block, and each of the second type syntactic elements is associated with the value of the effective transformation factor at each location associated with the second type syntactic element within the transformation factor block, and wherein the first type syntactic elements are decoded in scan order based on context-adaptive entropy decoding using a context selected for each of the first type syntactic elements, and wherein the context for the current first type syntactic element being decoded is selected according to the scan order and the transformation block size. Claim 11 In paragraph 10, the above data stream is a non-transient computer-readable medium comprising at least a portion associated with a color sample. Claim 12 In paragraph 10, the above data stream is a non-transient computer-readable medium comprising at least a portion associated with depth values related to a depth map. Claim 13 delete Claim 14 delete Claim 15 delete Claim 16 delete Claim 17 delete Claim 18 delete Claim 19 delete Claim 20 delete Claim 21 delete Claim 22 delete Claim 23 delete Claim 24 delete Claim 25 delete Claim 26 delete Claim 27 delete Claim 28 delete Claim 29 delete