Coding concept for the transformed representation of a sample block
By employing different scan orders for transform coefficients based on their underlying transform type, the solution addresses inefficiencies in current video coding techniques, enhancing coding efficiency and reducing signaling overhead.
Patent Information
- Application Number
- JP2024018126
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-11-26
- Filing Date
- 2024-02-08
- Publication Date
- 2024-12-24
- Estimated Expiration
- 2040-11-25
AI Technical Summary
Current video coding techniques, such as those in the Versatile Video Coding (VVC) draft, face inefficiencies in signaling transform coefficients due to the requirement of zeroing out coefficients outside a predetermined area, leading to increased complexity and signaling overhead, especially when multiple transform types are used.
The solution involves using different coefficient scan orders based on the underlying transform type to ensure non-zero coefficients are within a predetermined subarea, reducing the need to signal transform information and minimizing signaling overhead.
This approach enhances coding efficiency by reducing the number of transform coefficients that need to be scanned and signaling, thereby improving compression performance.
Smart Images

Figure 0007606019000001 
Figure 0007606019000002 
Figure 0007606019000003
Abstract
Description
[Technical field]
[0001] Embodiments according to the invention relate to a decoder for decoding a transformed representation of a sample block from a data stream, an encoder for encoding a transformed representation of a sample block into a data stream, corresponding methods, a computer program having a program code which, when running on a computer, performs the method for decoding / encoding a transformed representation of a sample block from / to a data stream, and a data stream.
[0002] introduction Hybrid video compression schemes such as AVC and HEVC rely on block-based prediction followed by a transform of the prediction residual, quantization of the transform coefficients, and entropy coding of the quantization indexes. The latter is also referred to as transform coefficient coding or residual coding. The following description uses the term transform for integer approximations of the transform as implemented in practical hybrid video compression schemes.
[0003] Traditionally, a fixed transform is specified in video coding standards for each potential block size N×N. For example, the HEVC standard specifies the use of DCT-II, except for intra-picture predicted 4×4 blocks, for which DST VI is used. By enabling selection between multiple predefined transform types, higher compression efficiency can be achieved. The current draft for Versatile Video Coding (VVC) specifies a set of five different horizontal and vertical transform type combinations, including DCT-II, DST-VII, and DCT-VIII. The bitstream includes a syntax by which the transform type selected by the encoder is signaled to the decoder. The coding of the transform coefficient level is independent of the selected transform type and is signaled before the selected transform type. Due to complexity, non-DCT-II transform types are applied only to rows and columns containing 16 or fewer non-zero coefficients. In this case, the block to be transformed (transform block) may have a width and height larger than 16, but all coefficients outside the top left 16x16 area are required to be zero. Furthermore, the transform is applied to a full transform block larger than 16x16, so that the resulting block of residual samples is also larger than 16x16. This manner of reducing the implementation logic of the transform is further referred to as zeroing out.
[0004] Furthermore, the current VVC draft specifies an additional low-frequency non-separable transform (LFNST) that can be applied after the transform in the encoder and its inverse in the decoder before the inverse transform. For this LFNST, multiple transform kernels may be selected in the encoder and signaled to the decoder using an LFNST index. Due to complexity, in the current VVC, only the LFNST can be combined with the DCT-II. [Background technology]
[0005] Current state-of-the-art video coding techniques, including the VVC evolution, provide means for signaling one of several predefined transform types, where the transform coefficient level is coded followed by a syntax indicating the selected transform, e.g., a multiple transform selection (MTS) index.
[0006] Transform coefficient levels are coded in sub-blocks or coefficient groups. A sub-block is processed using one scan pattern and coefficients inside the sub-block are processed using a still scan pattern. As in the current VVC Draft 7, both scan patterns may be backward / reverse diagonal scans. However, other scan patterns and directions may also be adopted. FIG. 1 illustrates an example of a 32×32 transform block 104 that is subdivided into 64 4×4 sub-blocks 117. In this example, the sub-blocks 117 are processed with a reverse diagonal scan 115, i.e., from the lower right corner 103 to the upper left corner 101. FIG. 1 shows the backward / reverse diagonal scanning of the 4×4 sub-blocks 117 inside the 32×32 transform block 104. The DCT-based transform tends to concentrate energy in the upper left corner 101, and thus the quantized coefficient values tend to be zero in the lower right corner 103 of the block, i.e., the transform block 104, after quantization. To avoid coding and decoding a sequence of zeros before the first nonzero coefficient 102 in the scan order 115, the first (last) nonzero or significant coefficient 102 in the (reverse) scan order 115 is signaled before processing a sub-block. Since only the sub-block 117 containing this first significant coefficient, i.e. the first nonzero 102, is known, all subsequent sub-blocks 117 in the scan order 115 are processed, as shown on the right side of FIG.
[0007] For example, a longer transform with 32 coefficients in one direction requires more logic and memory in the implementation. As already mentioned before, this has motivated the zero-out design in the current VVC draft. In this design, all transform types may be applied to 32 coefficients in each direction, but for non-DCT-II, the last 16 coefficients in each direction are required to be equal to 0. Figure 2 illustrates this process, where a 32x32 block of reconstructed residual samples, e.g., sample block 84, is generated by applying a transform to a 32x32 transform block 104, where only the first 16x16 coefficients may be non-zero. Figure 2 shows the transform coefficient level zero-out of the 32x32 transform block 104 before the inverse transform 40 / 54.
[0008] The information on which transform was selected, e.g., the MTS index, is signaled after the transform coefficient. As a result, the position of the first or last significant coefficient 102 is known. When this coefficient is outside the 16×16 non-zero area, i.e., the predefined sub-area 106, there is no need to signal the transform selection, because in this case the only allowed transform is DCT-II. However, in the current design, it is not possible to guarantee that all coefficients outside the 16×16 area are equal to zero. This can be seen in the right-hand example in FIG. 3, where the last position, i.e., the first or last coded coefficient position 102, is located inside the 16×16 non-zero area, but the subsequent sub-blocks in the scan pattern 110 are outside this area. In the case where those non-zero coefficients are present, the encoder constraint needs to ensure that the signaled transform is DCT-II, e.g., by always signaling the MTS index equal to 0. This causes signaling overhead because DCT-II is explicitly signaled but always required to be zero. In the following, the non-zero requirement may be defined that all non-zero transform coefficients are located inside a non-zero area, i.e., a predefined sub-area 106, and that all transform coefficients outside the non-zero area must be zero. In the following, two approaches are described to address this aspect. Figure 3 shows on the left a modified diagonal scanning 110 of sub-blocks for zeroing out according to an embodiment of the invention.
[0009] When multiple transform selections are combined with additional transforms such as the above-mentioned LFNST, the combination may also be constrained to reduce implementation logic. In the latest VVC draft, for example, only LFSNT may be combined with DCT-II, and the LFNST index, indicating whether LFNST is applied and, if so, which kernel, is signaled before the MTS index. When the LFNST index indicates the use of the LFNST kernel, the MTS index is not signaled and is inferred to be equal to 0, i.e., DCT-II. A simplified syntax diagram is illustrated on the left side of FIG. 13.
[0010] It is therefore desirable to provide a concept for rendering picture coding and / or video coding more efficient, which supports selection between multiple predefined transform types for blocks of a picture. Additionally or alternatively, it is desirable to reduce the bitstream and thus the signaling costs, e.g., to reduce the signaling overhead.
[0011] This is achieved by the subject matter of the independent claims of the present application.
[0012] Further embodiments according to the invention are defined by the subject matter of the dependent claims of the present application. Summary of the Invention
[0013] According to a first aspect of the present invention, the inventors of the present application have recognized that a problem is faced when trying to enable the selection of a transform for a block of a picture, which arises from the fact that for some transforms, for example for transforms in the second set of transforms, such as non-DCT-II transforms, only non-zero coefficients of the transform coefficient block are required to be allowed / located within a predefined sub-area of the transform coefficient block. Depending on the first coded coefficient position inside the predefined sub-area of the transform coefficient block, i.e. the position of the first non-zero coefficient, the zero coefficients outside the predefined sub-area can be decoded / encoded according to a coefficient scanning order. The transform coefficients may be scanned according to a coefficient scanning order from the first coded coefficient position towards the last scanning position, e.g. the coefficient in the upper left corner, i.e. the DC coefficient, or from the coefficient at the upper left corner of the transform coefficient block towards the first coded coefficient position, which can be understood as the last coded coefficient position in this latter case. According to a first aspect of the present application, this problem of decoding / encoding zero coefficients is overcome by using a different scan order for a transform coefficient block associated with a transform in a first set of one or more available transforms of a set of available transforms for a transform coefficient block associated with a transform in a second set of one or more available transforms of a set of available transforms. In the case where the transform coefficient block is associated with a transform in the first set of one or more available transforms, the transform coefficient block includes non-zero coefficients outside a predetermined sub-area of the transform coefficient block, and in the case where the transform coefficient block is associated with a transform in the second set of one or more available transforms, the transform coefficient block includes non-zero coefficients only inside a predetermined sub-area of the transform coefficient block. The inventors have found that using different coefficient scan orders depending on the underlying transform of the respective transform coefficient block is advantageous in terms of improving coding efficiency and reducing signaling overhead.This is based on the idea that the transform can indicate whether all non-zero coefficients are located inside a predetermined sub-area of the transform coefficient block, and thus the scan order can be selected such that only non-zero transform coefficients are decoded / coded according to the selected scan order. If the transform underlying the transform coefficient block is within a first set of one or more available transforms, values of transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the first coefficient scan order are decoded / coded, and the decoder infers that the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position are zero according to the first coefficient scan order. If the transform underlying the transform coefficient block is within a second set of one or more available transforms, values of transform coefficients of the transform coefficient block located within the predetermined sub-area and located from the first coded coefficient position towards the last scanned position according to the second coefficient scan order are decoded / coded, and the decoder infers that the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position and the transform coefficients of the transform coefficient block located outside the predetermined sub-area are zero according to the first coefficient scan order. Thus, since fewer transform coefficients may need to be scanned, decoding / encoding zero coefficients may be avoided, improving coding efficiency.
[0014] Thus, according to a first aspect of the present application, a decoder / encoder for decoding / encoding a transformed representation of a sample block from / to a data stream is configured to decode / encode coefficient position information from / to the data stream. The coefficient position information indicates a first coded coefficient position in a transform coefficient block. The first coded coefficient position may indicate either a position of a first non-zero transform coefficient in a coefficient scanning order or a last non-zero transform coefficient position in a reverse coefficient scanning order. The decoder / encoder is configured to check whether the first coded coefficient position is located within a predetermined sub-area of the transform coefficient block. The predetermined sub-area may define a sub-area of the transform coefficient block, inside the sub-area transform coefficients may be non-zero, and outside the sub-area all transform coefficients must be zero for a particular transform. According to an embodiment, in case the underlying transform of the transform coefficient block is in a first set of one or more available transforms of the set of available transforms, the transform coefficient block may include non-zero transform coefficients outside the predetermined sub-area, and in case the underlying transform of the transform coefficient block is in a second set of one or more available transforms of the set of available transforms, the transform coefficients outside the predetermined sub-area are zero. The predetermined sub-area may be composed of 16×16 transform coefficients. The predetermined sub-area may be located at the top left of the transform coefficient block. If the initially coded coefficient position is located inside the predetermined sub-area of the transform coefficient block, it is checked whether the underlying transform of the transform coefficient block is located in the first set of one or more available transforms of the set of available transforms or the second set of one or more available transforms of the set of available transforms. The decoder is configured to perform this check using the transform information transmitted in the data stream.If the transform of the underlying layer of the transform coefficient block is within a first set of one or more available transforms, the decoder / encoder is configured to decode / code values of transform coefficients of the transform coefficient blocks located from the first coded coefficient position towards the last scanned position according to the first coefficient scanning order, and the transform coefficients of the transform coefficient blocks located upstream of the first coded coefficient position according to the first coefficient scanning order are zero. If the transform of the underlying layer of the transform coefficient block is within a first set of one or more available transforms, the decoder is configured to infer that the transform coefficients of the transform coefficient blocks located upstream of the first coded coefficient position according to the first coefficient scanning order are zero. If the transform of the underlying layer of the transform coefficient block is within a second set of one or more available transforms, the decoder / encoder is configured to decode / code values of transform coefficients of the transform coefficient blocks located within a predetermined sub-area and located from the first coded coefficient position towards the last scanned position according to the second coefficient scanning order, and the transform coefficients of the transform coefficient blocks located upstream of the first coded coefficient position according to the first coefficient scanning order and the transform coefficients of the transform coefficient blocks located outside the predetermined sub-area are zero. The decoder is configured to infer that the transform coefficients of the transform coefficient blocks located upstream of the initially coded coefficient position and the transform coefficients of the transform coefficient blocks located outside the predetermined sub-area are zero according to the first coefficient scanning order if the transform coefficient block's underlying transform is within a second set of one or more available transforms. The transform coefficient blocks' underlying transforms according to the transform coefficient blocks define a transformed representation. The second coefficient scanning order scans the transform coefficients in the predetermined sub-area without scanning any transform coefficients outside the predetermined sub-area between the transform coefficients in the predetermined sub-area, and the first coefficient scanning order scans the transform coefficients in such a manner that there are one or more transform coefficients outside the predetermined sub-area scanned by the first coefficient scanning order between two transform coefficients located inside the predetermined sub-area.
[0015] According to an embodiment, the decoder / encoder is configured to reduce the set of available transforms to a first set of one or more available transforms by removing a second set of one or more available transforms from the set of available transforms when the first coded coefficient position is located outside the predetermined sub-area of the transform coefficient block, and determine an underlying transform of the transform coefficient block from the first set of one or more available transforms. The decoder / encoder is configured to decode / encode values of transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the first coefficient scanning order, and the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position according to the first coefficient scanning order are zero. The decoder is configured to infer that the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position are zero according to the first coefficient scanning order. Thus, in the case where the first coded coefficient position is located outside the predetermined sub-area of the transform coefficient block, the decoder is able to infer the underlying transform of the transform coefficient block, and the encoder does not need to code transform information related to the transform coefficient block into the data stream, thereby reducing the bit stream and achieving high coding efficiency.
[0016] According to an embodiment, the decoder / encoder is configured to decode / encode the transform information from / to the data stream using a context-adaptive entropy decoding / encoding, e.g., context-adaptive binary arithmetic coding, using a predetermined probability model, e.g., an estimated probability for a particular, e.g., LPS (Least Probable Symbol), binary value, updated for a particular context. The decoder / encoder is configured to determine the predetermined probability model depending on where an initially coded coefficient position is located within a transform coefficient block. The decoder / encoder may be configured to determine the predetermined probability model depending on where an initially coded coefficient position is located within a transform coefficient block, e.g., via determining a continuously updated context.
[0017] According to an embodiment, the decoder / encoder is configured to determine the predetermined probability model depending on where the first coded coefficient position is located within the transform coefficient block: if the first coded coefficient position matches the last scanned position, set the predetermined probability model to a first probability model, e.g., a first context, if the first coded coefficient position is less than or equal to a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, set the predetermined probability model to a second probability model, e.g., a second context, if the first coded coefficient position is more than a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, set the predetermined probability model to a third probability model, e.g., a third context, if the first coded coefficient position is more than a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order. The first coefficient scanning order and the second coefficient scanning order match at the last scanned position and a predetermined number of transform coefficients upstream of the last scanned position. In other words, up to that predetermined number, both scans are identical, or in further words, both scans end at the last scanned position and are equal at a predetermined number of coefficients upstream of the last scanned position. In other words, up to that predetermined number upstream of the last scanned position, both scans are identical. If the transform coefficient block includes only one non-zero transform coefficient, the predetermined probability model may be set to a first probability model. This single non-zero transform coefficient is located at the first coded coefficient position.
[0018] According to another embodiment, the decoder / encoder is configured to, when determining the predetermined probability model as a function of where the first coded coefficient position is located within the transform coefficient block, set the predetermined probability model to the first probability model if the first coded coefficient position is less than or equal to a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, and set the predetermined probability model to the second probability model if the first coded coefficient position is more than the predetermined number of coefficients away from the last scanned position according to the first coefficient scanning order. The first coefficient scanning order and the second coefficient scanning order coincide at the last scanned position and a predetermined number of transform coefficients upstream of the last scanned position.
[0019] According to an embodiment, the set of available transforms corresponds to a concatenation of the primary transforms and the secondary transforms in the predetermined sub-area, and comprises one or more multi-stage transforms comprised of primary transforms outside the predetermined sub-area and included in the second set of one or more available transforms. In other words, the second set of one or more available transforms of the set of available transforms comprises one or more multi-stage transforms. In addition, the set of available transforms comprises a set of primary-only transforms comprising one or more first primary-only transforms from those comprised in the first set of one or more available transforms and one or more second primary-only transforms included in the second set of one or more available transforms. The decoder / encoder decodes / encodes a secondary transform indicator from / to the data stream, the secondary transform indicator indicating whether the transform of the underlying layer of the transform coefficient block is a multi-stage transform, i.e., whether it is in the second set of one or more available transforms, and which one of the one or more multi-stage transforms is a primary-only transform or whether the transform of the underlying layer of the transform coefficient block is a primary-only transform. If the secondary transform indicator indicates that the underlying transform of the transform coefficient block is a primary-only transform, the decoder / encoder is configured to decode / code a transform indicator, for example, identifying the primary-only transform from the set of primary-only transforms, from / to the data stream. Since the secondary transform indicator already indicates the primary transform and the secondary transform, in the case where the underlying transform of the transform coefficient block is a multi-stage transform, only the secondary transform indicator needs to be decoded / coded from / to the data stream. Thus, high coding efficiency can be achieved since an additional transform indicator is only required in the case where the underlying transform of the transform coefficient block is not a multi-stage transform.
[0020] According to an embodiment, the set of available transforms corresponds to a concatenation of the primary transforms and secondary transforms within the predetermined sub-area, and includes a set of one or more multi-stage transforms composed of primary transforms outside the predetermined sub-area and included in a second set of one or more available transforms. In addition, the set of available transforms includes a set of primary-only transforms including one or more first primary-only transforms from those comprised by the first set of one or more available transforms and one or more second primary-only transforms included in the second set of one or more available transforms. The decoder / encoder is configured to decode / encode a secondary transform indicator from / to the data stream. The secondary transform indicator indicates whether the transform of the layer below the transform coefficient block is a multi-stage transform, and if so, whether it is a secondary transform of the multi-stage transform, or whether the transform of the layer below the transform coefficient block is a primary-only transform. In other words, the secondary transform indicator indicates whether the transform of the layer below the transform coefficient block is a multi-stage transform or a primary-only transform. The decoder / encoder is configured to decode / code a primary transform indicator from / to the data stream, which identifies a primary dedicated transform from the set of primary dedicated transforms in case the secondary transform indicator indicates that the transform of the underlying layer of the transform coefficient block is a primary dedicated transform, and identifies a primary transform of the multi-stage transform in case the secondary transform indicator indicates that the transform of the underlying layer of the transform coefficient block is a multi-stage transform, when the set of one or more multi-stage transforms includes more than one multi-stage transform with mutually different primary transforms. Thus, high variability and flexibility in the selection of the transform of the underlying layer of the transform coefficient block can be achieved, especially with respect to the multi-stage transform, resulting in high coding efficiency. In case all the multi-stage transforms are associated with the same primary transform, i.e. the multi-stage transforms do not have mutually different primary transforms, there is no need to decode / code the primary transform indicator.
[0021] According to an embodiment, the set of available transforms includes a multi-stage transform, e.g., a set of two or more multi-stage transforms, each corresponding to a concatenation of a primary transform and a secondary transform within the predetermined sub-area, composed of primary transforms outside the predetermined sub-area, and included in the second set of one or more available transforms. The second set of one or more available transforms may include all multi-stage transforms. In addition, the set of available transforms includes a set of primary-only transforms, from which the first set of one or more available transforms consists and including a first primary-only transform, e.g., a DCT-II transform, in which the primary transform for all of the one or more multi-stage transforms is equal, and one or more second primary-only transforms, e.g., a non-DCT-II transform, included in the second set of one or more available transforms. The decoder / encoder is configured to decode / encode a primary transform indicator from / to the data stream, the primary transform indicator indicating a first transform from a set including the first primary-only transform and one or more second primary-only transforms, e.g., a set of primary-only transforms. If the first transform is a first primary dedicated transform, the decoder / encoder is configured to decode / code from / to the data stream a secondary transform indicator that identifies a transform of an underlying layer of the transform coefficient block from a set including the first primary dedicated transform and a multi-stage transform, and the transform of the underlying layer of the transform coefficient block is one second primary dedicated transform in case the first transform is one of one or more second primary dedicated transforms. In other words, if the primary transform indicator indicates that the first transform is one of one or more second primary dedicated transforms, the transform of the underlying layer of the transform coefficient block is the indicated second primary dedicated transform, and if the primary transform indicator indicates that the first transform is the first primary dedicated transform, the transform of the underlying layer of the transform coefficient block is either the first primary dedicated transform or a multi-stage transform corresponding to a concatenation of the first primary dedicated transform and the secondary transform, depending on the secondary transform indicator. In the latter case, the secondary transform indicator can directly indicate / point to the transform of the underlying layer of the transform coefficient block. Thus, the transform of the underlying layer of the transform coefficient block can be selected and indicated in the data stream very efficiently, resulting in high coding efficiency.
[0022] According to an embodiment, the set of available transforms includes a set of multi-stage transforms, each corresponding to a concatenation of a primary transform and a secondary transform within the predefined sub-area, composed of primary transforms outside the predefined sub-area and included in the second set of one or more available transforms. In addition, the set of available transforms includes a set of primary-only transforms, including one or more first primary-only transforms from those comprised by the first set of one or more available transforms, and one or more second primary-only transforms included in the second set of one or more available transforms. The decoder / encoder is configured to decode / encode a primary transform indicator from / to the data stream. The primary transform indicator indicates, for example, a first transform from the set of primary-only transforms, including one or more first primary-only transforms and one or more second primary-only transforms. If the first transform is a first primary dedicated transform equal to one or more primary transforms of the multi-stage transforms, the decoder / encoder decodes / encodes from / to the data stream a secondary transform indicator that identifies an underlying transform of the transform coefficient block from a set that includes the first primary dedicated transform and one or more multi-stage transforms whose primary transform is equal to the first primary dedicated transform. The special primary transform indicator and secondary transform indicator result in high coding efficiency and, in particular, allow good selection between different first primary dedicated transforms and different multi-stage transforms with different primary transforms for selection of the underlying transform of the transform coefficient block. By allowing such selection, high compression efficiency can be achieved.
[0023] According to an embodiment, the decoder / encoder is configured to perform decoding / encoding of the primary transform indicator from / to the data stream using context adaptive entropy decoding using a predetermined probability model. The decoder / encoder is configured to determine the predetermined probability model depending on where a first coded coefficient position is located within a transform coefficient block.
[0024] According to an embodiment, the decoder / encoder is configured to determine the predetermined probability model depending on where the first coded coefficient position is located within the transform coefficient block: if the first coded coefficient position matches the last scanned position, set the predetermined probability model to a first probability model, if the first coded coefficient position is less than or equal to a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, set the predetermined probability model to a second probability model, if the first coded coefficient position is more than a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, set the predetermined probability model to a third probability model, the first coefficient scanning order and the second coefficient scanning order match at the last scanned position and a predetermined number of transform coefficients upstream of the last scanned position.
[0025] According to an embodiment, the decoder / encoder is configured, when determining the predetermined probability model depending on where the first coded coefficient position is located within the transform coefficient block, to set the predetermined probability model to a first probability model if the first coded coefficient position is less than or equal to a predetermined number of transform coefficients away from the last scanned position according to the first coefficient scanning order, and to set the predetermined probability model to a second probability model if the first coded coefficient position is more than a predetermined number of coefficients away from the last scanned position according to the first coefficient scanning order. The first coefficient scanning order and the second coefficient scanning order coincide at the last scanned position and a predetermined number of transform coefficients upstream of the last scanned position.
[0026] Depending on the embodiment, the primary transformation is equal to all of the one or more multi-stage transformations and is also equal to one of the one or more first primary-only transformations.
[0027] According to an embodiment, there is only one first primary-only transformation.
[0028] According to an embodiment, the encoder is configured to subject the sample block to an underlying transformation of the transform coefficient block to obtain the transform coefficient block.
[0029] According to an embodiment, the decoder is configured to subject the transform coefficient block to an inverse transform that reverses the transform of an underlying layer of the transform coefficient block to obtain the sample block. According to an embodiment, the encoder includes a feedback loop configured to subject the transform coefficient block to an inverse transform that reverses the transform of an underlying layer of the transform coefficient block to obtain the sample block.
[0030] According to an embodiment, the encoder is configured to derive a prediction residual of a prediction signal obtained by intra-picture or inter-picture prediction and to determine a block of samples representing the prediction residual, for example including a quantization.
[0031] According to an embodiment, the decoder is configured to use the sample blocks to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction. According to an embodiment, the encoder includes a feedback loop configured to use the sample blocks to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction.
[0032] According to a second aspect of the present invention, the inventors of the present application have recognized that a problem is faced when trying to enable the selection of a transform for a block of a picture, which arises from the fact that for some transforms, such as non-DCT-II transforms, only non-zero coefficients of the transform coefficient block are required to be allowed within a predetermined sub-area of the transform coefficient block. Currently, when the transform is selectable, the above-described non-zero requirement also generates a signaling overhead to indicate the transform of the lower layer of the transform coefficient block. According to a second aspect of the present application, this problem is overcome by checking whether all transform coefficients of the transform coefficient block located from the first coded coefficient position toward the last scanned position according to a predetermined coefficient scanning order are zero if they are not located within a predetermined sub-area of the transform coefficient block. The inventors have found that even if the first coded coefficient position is located inside the predetermined sub-area, it is still possible that a non-zero transform coefficient is located according to the predetermined scanning order outside the predetermined sub-area, so it is advantageous to check whether a non-zero transform coefficient is located outside the predetermined sub-area. This is based on the idea that it is possible to automatically identify whether the transform of the underlying layer of a transform coefficient block is a transform with the non-zero requirement described above by inspection. Thus, it is not necessary to select the transform of the underlying layer of each transform coefficient block from the set of all available transforms for each transform coefficient block. Instead, this feature allows the set of all available transforms to be reduced to the relevant transform, thereby achieving high coding efficiency. Furthermore, it is not necessary to indicate by an additional syntax element whether the transform of the underlying layer of a transform coefficient block is one from the transform with the non-zero requirement or one from the transform without the non-zero requirement, so that high compression can be achieved.
[0033] Thus, according to a second aspect of the present application, a decoder / encoder for decoding / encoding a transformed representation of a sample block from / to a data stream is configured to decode / encode coefficient position information from / to the data stream. The coefficient position information indicates a first coded coefficient position in a transform coefficient block. The first coded coefficient position may indicate either a position of a first non-zero transform coefficient in a coefficient scanning order or a position of a last non-zero transform coefficient in a reverse coefficient scanning order. Furthermore, the decoder / encoder is configured to decode / encode values of transform coefficients of a transform coefficient block located from a first coded coefficient position towards a last scanned position according to a predetermined coefficient scanning order, and to infer that transform coefficients of a transform coefficient block located upstream of a first coded coefficient position according to a predetermined coefficient scanning order are zero. The transform coefficients of a transform coefficient block located from a first coded coefficient position towards a last scanned position according to a predetermined coefficient scanning order may include either only transform coefficients having a non-zero value, or transform coefficients having a zero value and transform coefficients having a non-zero value. The decoder / encoder is configured to check whether all transform coefficients of a transform coefficient block located from a first coded coefficient position towards a last scanned position according to a predetermined coefficient scanning order are zero if they are not located within a predetermined sub-area of the transform coefficient block. The predetermined sub-area may define a sub-area of the transform coefficient block, inside the sub-area the transform coefficients may be non-zero, and outside the sub-area all transform coefficients must be zero for a particular transform. According to an embodiment, the transform coefficient block may include non-zero transform coefficients outside the predetermined sub-area in case an underlying transform of the transform coefficient block is within a first set of one or more available transforms of the set of available transforms, and the transform coefficients outside the predetermined sub-area are zero in case an underlying transform of the transform coefficient block is within a second set of one or more available transforms of the set of available transforms.The predetermined sub-area may consist of 16x16 transform coefficients. The predetermined sub-area may be located at the top left of the transform coefficient block. If all transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are zero if they are not located within the predetermined sub-area of the transform coefficient block, the decoder / encoder is configured to decode / encode transform information from / to the data stream and use the transform information to identify an underlying transform of the transform coefficient block from the set of available transforms, e.g., from a second set of one or more available transforms of the set of available transforms. If all transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are non-zero if they are not located within the predetermined sub-area of the transform coefficient block, the decoder / encoder is configured to reduce the set of available transforms to a first set of one or more available transforms by removing the second set of one or more available transforms from the set of available transforms, and determine an underlying transform of the transform coefficient block from the first set of one or more available transforms. A transformation of the transform coefficient blocks according to the underlying transform coefficient blocks defines a transformed representation. The predetermined coefficient scanning order scans the transform coefficients in such a manner that there are one or more transform coefficients outside the predetermined sub-area scanned by the predetermined coefficient scanning order between two transform coefficients located inside the predetermined sub-area.
[0034] According to an embodiment, the decoder / encoder is configured to check whether the first coded coefficient position is located within a predetermined sub-area of the transform coefficient block and to check whether all transform coefficients located outside the predetermined sub-area of the transform coefficient block from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are zero. The latter check is only optionally performed if the first coded coefficient position is located within the predetermined sub-area of the transform coefficient block. In the case where the first coded coefficient position is located outside the predetermined sub-area of the transform coefficient block, the decoder / encoder is configured to infer that all transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are not zero if they are not located within the predetermined sub-area of the transform coefficient block.
[0035] According to an embodiment, the decoder / encoder may include features and / or functionality as described with respect to the decoder / encoder according to the first aspect if the initially coded coefficient position is located within a predetermined sub-area of the transform coefficient block.
[0036] According to an embodiment, the decoder / encoder is configured to perform decoding / encoding of transformation information from / to the data stream using context-adaptive entropy decoding / encoding using a predetermined probability model, and to determine the predetermined probability model depending on where the initially coded coefficient position is located within the transform coefficient block.
[0037] According to an embodiment, the decoder / encoder is configured, when determining the predetermined probability model depending on where the first coded coefficient position is located within the transform coefficient block, to set the predetermined probability model to a first probability model if the first coded coefficient position matches the last scanned position, to set the predetermined probability model to a second probability model if the first coded coefficient position is not more than a predetermined number of transform coefficients away from the last scanned position according to the predetermined coefficient scanning order, and to set the predetermined probability model to a third probability model if the first coded coefficient position is more than a predetermined number of transform coefficients away from the last scanned position according to the predetermined coefficient scanning order.
[0038] According to another embodiment, the decoder / encoder is configured, when determining the predetermined probability model depending on where the first coded coefficient position is located within the transform coefficient block, to set the predetermined probability model to a first probability model if the first coded coefficient position is less than or equal to a predetermined number of transform coefficients away from the last scanned position according to a predetermined coefficient scanning order, and to set the predetermined probability model to a second probability model if the first coded coefficient position is more than a predetermined number of coefficients away from the last scanned position according to the predetermined coefficient scanning order.
[0039] According to an embodiment, the set of available transforms includes a multi-stage transform, e.g., a set of multi-stage transforms, each corresponding to a concatenation of a primary transform and a secondary transform within the predetermined sub-area, composed of a primary transform outside the predetermined sub-area and included in the second set of one or more available transforms. In other words, the second set of one or more available transforms of the set of available transforms includes two or more multi-stage transforms. In addition, the set of available transforms includes a set of primary-only transforms, from which the first set of one or more available transforms consists, including a first primary-only transform, in which the primary transforms for all of the one or more multi-stage transforms are equal, and one or more second primary-only transforms included in the second set of one or more available transforms. The decoder / encoder performs the following steps: if all transform coefficients of a transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are zero if they are not located within the predetermined sub-area of the transform coefficient block, Decoding / encoding a secondary transform indicator from / to the data stream, the secondary transform indicator indicating whether the transform underlying the transform coefficient block is a multi-stage transform and which one of the one or more multi-stage transforms is a primary-only transform or whether the transform underlying the transform coefficient block is a primary-only transform, i.e., whether the same belongs to a set of primary-only transforms or to a set of multi-stage transforms; and checking whether the secondary transform indicator indicates that the transform underlying the transform coefficient block is a primary only transform. If the secondary transform indicator indicates that the transform underlying the transform coefficient block is a primary only transform, the decoder / encoder is configured to, for example, decode / encode into / from the data stream a transform indicator that identifies the primary only transform from a set of primary only transforms. If all transform coefficients of a transform coefficient block located from the first coded coefficient position toward the last scanned position according to a predetermined coefficient scanning order are non-zero when not located within a predetermined sub-area of the transform coefficient block, the transform of the lower layer of the transform coefficient block is the first primary dedicated transform. According to this embodiment, it is possible to infer that the transform of the lower layer of the transform coefficient block is the first primary dedicated transform when the transform coefficient block includes a non-zero transform coefficient outside the predetermined sub-area. Thus, for such a transform coefficient block, the data stream does not need to include transform information, thereby achieving high compression. Furthermore, it is possible to explicitly indicate a multi-stage transform as the transform of the lower layer of the transform coefficient block using the secondary transform indicator, and it is possible to clearly indicate a primary dedicated transform as the transform of the lower layer of the transform coefficient block by using a primary transform indicator in addition to the secondary transform indicator. It should be noted that this special transform selection can also indicate the first primary dedicated transform as the transform of the lower layer of the transform coefficient block for blocks with all non-zero transform coefficients inside the predetermined sub-area, thereby resulting in a good transform selection and achieving high compression.
[0040] According to an embodiment, the set of available transforms includes a multi-stage transform, e.g., a set of multi-stage transforms, each corresponding to a concatenation of a primary transform and a secondary transform within the predetermined sub-area, consisting of a primary transform outside the predetermined sub-area and included in the second set of one or more available transforms. In addition, the set of available transforms includes a set of primary-only transforms, consisting of a first primary-only transform, the primary transforms for all of the one or more multi-stage transforms being equal, and one or more second primary-only transforms included in the second set of one or more available transforms. The decoder / encoder performs the following steps: if all transform coefficients of a transform coefficient block located from a first coded coefficient position towards a last scanned position according to a predetermined coefficient scanning order are zero if they are not located within a predetermined sub-area of the transform coefficient block; Decoding / encoding a primary transformation indicator from / to the data stream, the primary transformation indicator indicating a first transformation from a set including a first primary dedicated transformation and one or more second primary dedicated transformations, e.g., the set of primary dedicated transformations; configured to, if the first transform is a first primary-only transform, decode / encode from / into the data stream a secondary transform indicator that identifies an underlying transform of the transform coefficient block from a set that includes the first primary-only transform and the multi-stage transform; In the case where the first transform is one of one or more second primary dedicated transforms, the underlying transform of the transform coefficient block is one second primary dedicated transform. If all transform coefficients of a transform coefficient block located from the first coded coefficient position towards the last scanned position according to a predetermined coefficient scanning order are non-zero if they are not located in a predetermined sub-area of the transform coefficient block, then the transform of the lower layer of the transform coefficient block is the first primary-only transform.
[0041] Depending on the embodiment, the primary transformation is equal to all of the one or more multi-stage transformations and is also equal to one of the one or more first primary-only transformations.
[0042] According to an embodiment, there is only one first primary-only transformation.
[0043] According to an embodiment, the encoder is configured to subject the sample block to an underlying transformation of the transform coefficient block to obtain the transform coefficient block.
[0044] According to an embodiment, the decoder is configured to subject the transform coefficient block to an inverse transform that reverses the transform of an underlying layer of the transform coefficient block to obtain the sample block. According to an embodiment, the encoder includes a feedback loop configured to subject the transform coefficient block to an inverse transform that reverses the transform of an underlying layer of the transform coefficient block to obtain the sample block.
[0045] According to an embodiment, the encoder is configured to derive a prediction residual of a prediction signal obtained by intra-picture or inter-picture prediction and to determine a block of samples representing the prediction residual, for example including a quantization.
[0046] According to an embodiment, the decoder / encoder is configured to use the sample blocks to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction. According to an embodiment, the encoder includes a feedback loop configured to use the sample blocks to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction.
[0047] An embodiment relates to a method of decoding / encoding a transformed representation of a sample block from / to a data stream, the method comprising decoding / encoding coefficient position information from / to the data stream, the coefficient position information indicating a first coded coefficient position in a transform coefficient block. The method comprises checking whether the first coded coefficient position is located within a predetermined sub-area of the transform coefficient block. If the first coded coefficient position is located inside the predetermined sub-area of the transform coefficient block, the method comprises checking whether an underlying transform of the transform coefficient block is within a first set of one or more available transforms of a set of available transforms or a second set of one or more available transforms of a set of available transforms. The decoding method may perform the check using the transform information transmitted in the data stream. If the underlying transform of the transform coefficient block is within the first set of one or more available transforms, the method comprises decoding / encoding values of transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to a first coefficient scanning order, the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position according to the first coefficient scanning order being zero. The method for decoding includes inferring that transform coefficients of a transform coefficient block located upstream of a first coded coefficient position according to a first coefficient scanning order are zero. If an underlying transform of the transform coefficient block is within a second set of one or more available transforms, the method includes decoding / encoding values of transform coefficients of a transform coefficient block located within a predetermined sub-area and located from the first coded coefficient position toward a last scanned position according to the second coefficient scanning order, where the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position according to the first coefficient scanning order and the transform coefficients of the transform coefficient block located outside the predetermined sub-area are zero.The method for decoding includes inferring that transform coefficients of a transform coefficient block located upstream of an initially coded coefficient position and transform coefficients of a transform coefficient block located outside a predetermined sub-area are zero according to a first coefficient scanning order. A transformation of the transform coefficient blocks according to the transform coefficient blocks defines a transformed representation. A second coefficient scanning order scans the transform coefficients in the predetermined sub-area without scanning any transform coefficients outside the predetermined sub-area between the transform coefficients in the predetermined sub-area, and the first coefficient scanning order scans the transform coefficients in such a manner that there are one or more transform coefficients outside the predetermined sub-area scanned by the first coefficient scanning order between two transform coefficients located inside the predetermined sub-area.
[0048] An embodiment relates to a method for decoding / encoding a transformed representation of a sample block from / to a data stream, comprising decoding / encoding coefficient position information from / to the data stream, the coefficient position information indicating a first coded coefficient position in a transform coefficient block. The method comprises decoding / encoding values of transform coefficients of a transform coefficient block located from a first coded coefficient position towards a last scanned position according to a predetermined coefficient scanning order, the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position according to the predetermined coefficient scanning order being zero. The method of decoding comprises inferring that the transform coefficients of the transform coefficient block located upstream of the first coded coefficient position according to the predetermined coefficient scanning order are zero. Furthermore, the method comprises checking whether all transform coefficients of the transform coefficient block located from a first coded coefficient position towards a last scanned position according to the predetermined coefficient scanning order are zero if they are not located within a predetermined sub-area of the transform coefficient block. If all transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are zero if they are not located within a predetermined sub-area of the transform coefficient block, the method includes decoding / encoding transform information from / to the data stream and identifying an underlying transform of the transform coefficient block from a set of available transforms. The decoding method may perform the identification using the transform information. If all transform coefficients of the transform coefficient block located from the first coded coefficient position towards the last scanned position according to the predetermined coefficient scanning order are non-zero if they are not located within a predetermined sub-area of the transform coefficient block, the method includes reducing the set of available transforms to a first set of one or more available transforms by removing a second set of one or more available transforms from the set of available transforms, and determining an underlying transform of the transform coefficient block from the first set of one or more available transforms. The underlying transform of the transform coefficient block according to the transform coefficient block defines a transformed representation.The predetermined coefficient scanning order scans the transform coefficients in such a manner that there are one or more transform coefficients outside the predetermined sub-area scanned by the predetermined coefficient scanning order between two transform coefficients located inside the predetermined sub-area.
[0049] The above described method is based on the same considerations as the above described encoder / decoder, however the method can be completed with all the features and functionality described with respect to the encoder / decoder.
[0050] The embodiments relate to a data stream having pictures or video encoded therein using the encoding methods described herein.
[0051] An embodiment also relates to a computer program having a program code for performing the methods described herein, when the computer program runs on a computer.
[0052] The drawings are not necessarily to scale, emphasis instead being placed generally on illustrating the principles of the invention.In the following description, various embodiments of the invention are described with reference to the following drawings, in which: [Brief description of the drawings]
[0053] [Figure 1] An example of a 32x32 transform block that is subdivided into 64 4x4 sub-blocks is shown. [Diagram 2] Illustrates a reconstruction of a 32x32 block, where only the first 16x16 coefficients can be non-zero. [Diagram 3] 4 shows an unmodified scan of a transform block according to the current design and a modified scan of a transform block according to an embodiment. [Figure 4] 1 shows an apparatus for predictively encoding pictures or video. [Diagram 5] 1 illustrates an apparatus for predictively decoding pictures or video. [Figure 6]1 illustrates the relationship between the reconstructed signal and the combination of the prediction residual signal and the prediction signal. [Figure 7] 1 illustrates a decoder capable of changing the scan order according to an embodiment. [Figure 8] 13 illustrates the selection of an underlying transform of a transform coefficient block in the case where a first coded coefficient position is located outside a predetermined sub-area, according to an embodiment. [Figure 9] 4 illustrates CABAC coding of transformation information according to an embodiment. [Figure 10] 4 illustrates transform coefficient blocks having different numbers of non-zero transform coefficients according to an embodiment. [Figure 11a] 3 shows a set of available transformations according to a first embodiment. [Figure 11b] 4 shows a set of available transformations according to a second embodiment. [Figure 12] 1 illustrates a decoder for checking whether transform coefficients outside a predetermined sub-area are zero, according to an embodiment. [Figure 13] 1 shows a first simplified syntax diagram. [Figure 14] 1 shows a second simplified syntax diagram. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0054] Equal or equivalent elements, or elements having equal or equivalent functionality, are represented in the following description by equal or equivalent reference signs, even if they appear in different figures.
[0055] In the following description, a number of details are set forth to provide a more complete description of the embodiments of the present invention. However, it will be apparent to those skilled in the art that the embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form without detailed descriptions to avoid obscuring the embodiments of the present invention. In addition, unless otherwise stated, features of different embodiments described later in this specification may be combined with each other.
[0056] It will be further noted that, as used herein, a non-zero transform coefficient defines a transform coefficient having a non-zero value, and a zero transform coefficient defines a transform coefficient having a zero value.
[0057] In the following, various examples are described that can help achieve more effective compression by using transform type signaling for coefficient level coding zeroing out. The embodiments presented herein describe a signaling concept that constrains the area of coded transform coefficients that can be non-zero within a block depending on the selection of a particular transform type, with the goal of reducing signaling overhead and simplifying encoding / decoding logic for hybrid video compression applications.
[0058] To facilitate understanding of the following embodiments of the present application, the description begins with the presentation of a description of a video encoder and a video decoder of a block-based predictive codec for coding pictures of a video to form an example of a coding framework into which embodiments for coding and decoding transformed representations of sample blocks can be incorporated. The video encoder and the video decoder are described with respect to Figures 4-6. Although the embodiments of the present application described herein may be readily incorporated into the video encoder and the decoder of Figures 4 and 5, respectively, the embodiments of the present application may also be used to form video encoders and video decoders that do not operate according to the underlying coding framework of the video encoder and the video decoder of Figures 4 and 5.
[0059] FIG. 4 shows an apparatus for predictively coding a picture 12 or a video composed of a sequence of pictures 12 into a data stream 14. Block-wise predictive coding is used for this purpose. Furthermore, transform-based residual coding is exemplarily used. The apparatus or encoder is indicated using the reference number 10. FIG. 5 shows a corresponding decoder 20, i.e. an apparatus 20 configured to predictively decode a picture 12' in a picture block or a video composed of pictures 12' from a data stream 14, also exemplarily using transform-based residual decoding, an apostrophe being used to indicate that the picture 12' as reconstructed by the decoder 20 deviates from the picture 12 originally coded by the apparatus 10 in terms of coding losses introduced by quantization of the predictive residual signal. Although FIG. 4 and FIG. 5 exemplarily use transform-based predictive residual coding, the embodiments of the present application are not limited to this type of predictive residual coding. This also applies to other details regarding FIG. 4 and FIG. 5, as outlined below.
[0060] The encoder 10 is configured to subject the prediction residual signal to a spatial-to-spectral transformation and to encode the thereby obtained prediction residual signal into a data stream 14. Similarly, the decoder 20 is configured to decode the prediction residual signal from the data stream 14 and to subject the thereby obtained prediction residual signal to a spectral-to-spatial transformation.
[0061] Internally, the encoder 10 may include a prediction residual signal former 22, which generates a prediction residual 24 so as to measure the deviation of a prediction signal 26 from an original signal, i.e. the video or current picture 12. The prediction residual signal former 22 may for example be a subtractor which subtracts the prediction signal from the original signal, i.e. the current picture 12. The encoder 10 may then further include a transformer 28 which subjects the prediction residual signal 24 to a spatial-spectral transformation so as to obtain a spectral domain prediction residual signal 24', which is then quantized by a quantizer 32 also provided by the encoder 10. Thus, the quantized prediction residual signal 24'' is coded into the bitstream 14. For this purpose, the encoder 10 may optionally include an entropy coder 34 which entropy codes the prediction residual signal as transformed and quantized into the data stream 14. The prediction signal 26 is generated by a prediction stage 36 of the encoder 10 on the basis of a prediction residual signal 24'' decoded into and decodable from the data stream 14. For this purpose, the prediction stage 36 internally comprises, as shown in FIG. 4, a dequantizer 38 which dequantizes the prediction residual signal 24'' to obtain a spectral domain prediction residual signal 24'''' corresponding to the signal 24' except for the quantization losses, followed by an inverse transformer 40 which subjects the latter prediction residual signal 24''' to an inverse transformation, i.e. a spectral-spatial transformation, to obtain a prediction residual signal 24'''' corresponding to the original prediction residual signal 24 except for the quantization losses. A combiner 42 of the prediction stage 36 then recombines the prediction signal 26 and the prediction residual signal 24'''', for example by addition, to obtain a reconstructed signal 46, i.e. a reconstruction of the original signal 12. The reconstructed signal 46 may correspond to the signal 12'.
[0062] A prediction module 44 of the prediction stage 36 then generates a prediction signal 26 based on the signal 46, for example by using spatial prediction, i.e. intra-prediction, and / or temporal prediction, i.e. inter-prediction, as will be described in more detail below.
[0063] Similarly, the decoder 20 may internally be composed of components corresponding to the prediction stage 36, interconnected in a manner corresponding to the prediction stage 36. In particular, the entropy decoder 50 of the decoder 20 entropy decodes the quantized spectral domain prediction residual signal 24'' from the data stream, once the dequantizer 52, the inverse transformer 54, the combiner 56 and the prediction module 58, interconnected and cooperating in the manner described above with respect to the modules of the prediction stage 36, recover the reconstructed signal based on the prediction residual signal 24'', so that the output of the combiner 56 results in the reconstructed signal, i.e., the video or current picture 12', as shown in Figure 5.
[0064] Although not specifically described above, it is readily apparent that the encoder 10 may set some coding parameters, including, for example, prediction modes and motion parameters, according to some optimization schemes, such as, for example, in a manner that optimizes some rate- and distortion-related criteria, i.e., coding cost, and / or uses some rate control. As described in more detail below, the encoder 10 and the decoder 20 and corresponding modules 44, 58 each support different prediction modes, such as intra- and inter-coding modes, that form a certain kind of set or pool of primitive prediction modes, based on which predictions of picture blocks are configured in a manner described in more detail below. The granularity at which the encoder and the decoder switch between their prediction synthesis may correspond to a subdivision of the pictures 12 and 12′, respectively, into blocks, of which some may be solely intra-coded blocks, some may be solely inter-coded blocks, and optionally further blocks may be blocks obtained using both intra- and inter-coding, as will be described in more detail below. According to the intra-coding mode, a prediction signal for a block is obtained based on the spatial already coded / decoded neighbors of the respective block. There may be several intra-coding sub-modes, the selection of which represents a kind of intra-prediction parameters. There may be directional or angular intra-coding sub-modes, according to which the prediction signal for each block is filled by extrapolating the neighboring sample values to the respective block according to a specific direction that is specific for each directional intra-coding sub-mode.The intra-coding sub-modes may also include one or more further sub-modes, such as, for example, a DC coding mode, according to which the prediction signal for each block assigns a DC value to all samples in the respective block, and / or a planar intra-coding mode, according to which the prediction signal for each block is approximated or determined to be a spatial distribution of sample values described by a two-dimensional linear function over the sample positions of the respective block by deriving the slope and offset of the plane defined by a two-dimensional linear function based on neighboring samples. In comparison, according to the inter-prediction modes, the prediction signal for a block may be obtained, for example, by predicting the block interior temporally. For the parameterization of the inter-prediction modes, a motion vector may be signaled in the data stream, indicating the spatial displacement of the portion of the previously coded picture of the video from which the previously coded / decoded picture was sampled to obtain the prediction signal for the respective block. This means that in addition to the residual signal coding provided by the data stream 14, such as the entropy coded transform coefficient levels representing the quantized spectral domain prediction residual signal 24'', the data stream 14 may be encoded with prediction related parameters for assigning to the block prediction mode, prediction parameters for the assigned prediction mode, such as motion parameters for inter prediction modes, and optionally further parameters that control the synthesis of the final prediction signal for the block using the assigned prediction mode and prediction parameters as outlined in more detail below. In addition, the data stream may contain parameters that control and signal the subdivision of each of the pictures 12 and 12' into blocks. The decoder 20 uses those parameters to subdivide the picture in the same way as the encoder did, assigning the same prediction modes and parameters to the blocks, and performing the same prediction resulting in the same prediction signal.
[0065] FIG. 6 illustrates the relationship between, on the one hand, the reconstructed signal, i.e. the reconstructed picture 12′, and, on the other hand, the combination of the prediction residual signal 24″″ and the prediction signal 26 as signaled in the data stream. As already expressed above, the combination may be additive. The prediction signal 26 is illustrated in FIG. 6 as a subdivision of the picture area into blocks 80 of variable size, but this is only an example. The subdivision may be any subdivision, such as a regular subdivision of the picture area into rows and columns of blocks, or a multi-tree subdivision of the picture 12 into leaf blocks of variable size, such as a quadtree subdivision or the like, a mixture of which is shown in FIG. 6, where the picture area is first subdivided into rows and columns of tree root blocks, which are then further subdivided according to a recursive multi-tree subdivision to result in blocks 80.
[0066] The prediction residual signal 24'''' in FIG. 6 is also illustrated as a subdivision of the picture area into blocks 84, which may be referred to as transform blocks or transform coefficient blocks, to distinguish the same from the coding blocks 80. In effect, FIG. 6 illustrates that the encoder 10 and the decoder 20 may use two different subdivisions of the picture 12 and the picture 12' into blocks, one into coding blocks 80 and the other into blocks 84. Although both subdivisions may be identical, i.e. each block 80 may simultaneously form a transform block 84, or vice versa, FIG. 6 illustrates the case where, for example, the subdivision into transform blocks 84 forms an extension of the subdivision into blocks 80, so that any boundary between the two blocks 80 overlaps with the boundary between the two blocks 84, or alternatively, any of the blocks 80 coincides with one of the transform blocks 84 or with a cluster of transform blocks 84. However, the subdivisions may also be determined or selected independently of each other, so that the transform blocks 84 instead cross the block boundaries between the blocks 80. As far as the subdivision into transform blocks 84 is considered, the same remarks apply as those proposed for the subdivision into blocks 80, i.e. the blocks 84 may be the result of a normal subdivision of the picture area into blocks arranged in rows and columns, the result of a multi-tree subdivision of the picture area, or any other classification of combinations or partitions thereof. It will be noted in passing that the blocks 80 and 84 are not limited to quadratic, rectangular or any other shape. Moreover, the subdivision of the current picture 12 into blocks 80, from which a prediction signal is formed, and into blocks 84, from which a prediction residual is coded, may not be the only subdivision used for coding / decoding.For those subdivisions from the granularity at which prediction signal determination and residual coding are performed, firstly, the residual coding may instead be performed without subdivision, and secondly, at another granularity from those subdivisions, the encoder and decoder may set certain coding parameters, including some of the parameters mentioned above, such as prediction parameters and prediction signal synthesis control signals.
[0067] 6 illustrates that the combination of prediction signal 26 and prediction residual signal 24'''' directly results in reconstructed signal 12'. However, it should be noted that more than one prediction signal 26 may be combined with prediction residual signal 24'''' to result in picture 12' according to alternative embodiments, such as prediction signals obtained from other views or other coding layers, e.g., coded / decoded in separate prediction loops with separate DPBs.
[0068] In Fig. 6, the transform blocks 84 shall have the following meaning: the transformer 28 and the inverse transformer 54 perform their transforms in units of their transform blocks 84. For example, many codecs use some kind of DST or DCT for all transform blocks 84. Some codecs allow to skip the transform for some of the transform blocks 84 so that the prediction residual signal is directly coded in the spatial domain. However, according to the embodiments described herein, the encoder 10 and the decoder 20 are configured in such a way that they support several transforms, i.e. a set of available transforms 130, as described with respect to one or more of Figs. 7 to 12 below.
[0069] In the following, embodiments are described which may improve coding efficiency for transform type signaling and / or improve compression efficiency by allowing a selection between multiple transform types. Most of the embodiments below illustrate features and functionality with respect to a decoder. However, it is clear that the same or similar features and functionality may be provided by an encoder, e.g. the decoding performed by a decoder may correspond to the encoding by the encoder. Furthermore, the encoder may include the same features as described with respect to the decoder in a feedback loop, e.g. prediction stage 36.
[0070] 7 shows a decoder 20 for decoding a transformed representation of a sample block 84 from a data stream 14. According to an embodiment, the encoder is configured to subject the sample block 84 to a transform underlying the transform coefficient block 104 to obtain a transform coefficient block 104. The transform coefficient block 104 according to the transform 131 underlying the transform coefficient block 104 defines the transformed representation.
[0071] The decoder 20 shown in Fig. 7 is configured to decode coefficient position information 100 from the data stream 14. The coefficient position information 100 indicates a first coded coefficient position 102 in a transform coefficient block 104. The first coded coefficient position 102 may indicate a position of a first non-zero transform coefficient in a scan order, e.g., a first coefficient scan order 110 or a second coefficient scan order 114. In the case of a flip / reverse scan order, the first coded coefficient position 102 may indicate a position of a last non-zero transform coefficient according to the flip / reverse scan order. A non-zero transform coefficient herein defines a transform coefficient having a value not equal to zero, and a zero transform coefficient defines a transform coefficient having a value equal to zero.
[0072] Decoder 20 is configured to check ( 107 ) whether a first coded coefficient position 102 is located within a predetermined sub-area 106 of a transform coefficient block 104 .
[0073] If the initially coded coefficient position 102 is located inside a predetermined sub-area 106 of the transform coefficient block 104, the decoder 20 is configured to check (111) using the transform information 108 transmitted in the data stream 14 whether an underlying transform 131 of the transform coefficient block 104 is within a first set 132 of one or more available transforms of the set of available transforms 130 or a second set 134 of one or more available transforms of the set of available transforms 130. According to an embodiment, the first set 132 of one or more available transforms includes transforms for the transform coefficient block 104 that have non-zero transform coefficients outside the predetermined sub-area, such as the transform coefficient 118. According to an embodiment, the second set 134 of one or more available transforms includes transforms for the transform coefficient block 104 that do not have any non-zero transform coefficients outside the predetermined sub-area 106. In other words, one or more transforms from the second set of one or more available transforms 134 may have a requirement that all transform coefficients outside the predetermined subarea have values equal to zero, and that non-zero transform coefficients are located only inside the predetermined subarea 106, i.e., a non-zero requirement. A transform from the first set of one or more available transforms 132 may not need to meet this non-zero requirement.
[0074] If the underlying transform 131 of the transform coefficient block 104 is within the first set 132 of one or more available transforms, the decoder 20 is configured to decode (109) values of the transform coefficients of the transform coefficient block 104 according to the first coefficient scanning order 110 located from the first coded coefficient position 102 towards the last scanned position 101, and to infer that the transform coefficients 112 of the transform coefficient block 104 according to the first coefficient scanning order 110 located upstream of the first coded coefficient position 102 are zero. As shown in FIG. 7, for this first condition, the decoder 20 may be configured to infer that all transform coefficients 112 within a shaded area of the transform coefficient block 104 are zero. The first coefficient scanning order 110 scans the transform coefficients of the transform coefficient block 104 in such a manner that there are one or more transform coefficients 118 outside the predetermined sub-area 106 scanned by the first coefficient scanning order 110 between two transform coefficients 120 located inside the predetermined sub-area 106. As illustrated by way of example in the embodiment of FIG. 7 , the transform coefficients 1181-1183 outside the predetermined subarea 106 are scanned by a first coefficient scan order 110 between two transform coefficients 1201 and 1202 located inside the predetermined subarea 106, and the transform coefficient 1184 outside the predetermined subarea 106 is scanned by a first coefficient scan order 110 between two transform coefficients 1203 and 1204 located inside the predetermined subarea 106.
[0075] If the underlying transform 131 of the transform coefficient block 104 is within the second set 134 of one or more available transforms, the decoder 20 is configured to decode (113) values of transform coefficients of the transform coefficient block 104 located within the predetermined sub-area 106 and located from the first coded coefficient position 102 toward the last scanned position 101 according to the second coefficient scanning order 114, and to infer that the transform coefficients 116 of the transform coefficient block 104 located upstream of the first coded coefficient position 102 and the transform coefficients 118 of the transform coefficient block 104 located outside the predetermined sub-area 106 are zero according to the first coefficient scanning order 110. The second coefficient scanning order 114 scans the transform coefficients 120 within the predetermined sub-area 106 without scanning any transform coefficients 118 outside the predetermined sub-area 106 among the transform coefficients 120 within the predetermined sub-area 106.
[0076] According to an embodiment, the check 107 whether the first coded coefficient position 102 is located within a predetermined sub-area 106 of the transform coefficient block 104 can result in the realization that the first coded coefficient position 102 is not located within the predetermined sub-area 106. Such a negative case 210 is shown in Figure 8. The positive case 200 of realizing that the first coded coefficient position 102 is located within the predetermined sub-area 106 is shown in Figure 8 by only three dots, since the positive case has already been explained with respect to Figure 7.
[0077] If the initially coded coefficient position 102 is located outside a predetermined sub-area 106 of the transform coefficient block 104, the decoder 20 is configured to reduce (220) the set of available transforms 130 to a first set of one or more available transforms 132 by removing a second set of one or more available transforms 134 from the set of available transforms 130, and to determine an underlying transform 131 of the transform coefficient block 104 from the first set of one or more available transforms 132. This determination may be performed either by using the transform information 108 transmitted in the data stream 14 or, if the first set of one or more available transforms 132 constitutes only one transform, by inferring that the underlying transform 131 of the transform coefficient block 104 is one transform. In addition, the decoder 20 is configured to decode (109) values of transform coefficients of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to the first coefficient scanning order 110, and to infer that the transform coefficients 112 of the transform coefficient block 104 located upstream of the first coded coefficient position 102 according to the first coefficient scanning order 110 are zero. As shown in Figure 8, the decoder 20 may be configured to infer that all transform coefficients 112 within a shaded area of the transform coefficient block 104 are zero.
[0078] The features and / or functionality described with respect to FIG. 8 are optional to the decoder 20 of FIG.
[0079] According to an embodiment, the decoder 20 shown in Fig. 7 is configured to decode the transform information 108 from the data stream 14 using context-adaptive entropy decoding 230, e.g., context-adaptive binary arithmetic coding, as shown in Fig. 9. The decoder 20 may use a predefined probability model 232, e.g., an estimated probability for a particular binary value as updated for a particular context. The decoder may be configured to determine (234) the predefined probability model 232 depending on where the initially coded coefficient position 102 is located within the transform coefficient block 104, see Figs. 9 and 10 for a description thereof, respectively.
[0080] According to an embodiment, e.g. the first embodiment shown in FIG. 9 , the decoder 20 is configured, when determining (234) the predetermined probability model 232 as a function of where the first coded coefficient position 102 is located within the transform coefficient block 104, to set the predetermined probability model 232 to a first probability model 2361 if the first coded coefficient position 102 matches the last scanned position 101, to set the predetermined probability model 232 to a second probability model 2362 if the first coded coefficient position 102 is less than or equal to a predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110, and to set the predetermined probability model 232 to a third probability model 2363 if the first coded coefficient position 102 is more than the predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110. The predetermined number 240 for this embodiment may be set to 10 transform coefficients, and the least likely transform coefficients that are less than or equal to the predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110 are indicated by reference numeral 240. However, it will be apparent that a different predetermined number 240 transform coefficients may also be selected.
[0081] According to an alternative embodiment, for example the embodiment shown in FIG. 9 , the decoder 20 is configured, when determining (234) the predetermined probability model 232 as a function of where the first coded coefficient position 102 is located within the transform coefficient block 104, to set the predetermined probability model 232 to a first probability model 2381 if the first coded coefficient position 102 is less than or equal to the predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110, and to set the predetermined probability model 232 to a second probability model 2382 if the first coded transform coefficient position 102 is more than the predetermined number 240 coefficients away from the last scanned position 101 according to the first coefficient scanning order 110. The predetermined number 240 for this embodiment may be set to eight transform coefficients, and the least likely transform coefficients that are less than or equal to the predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110 are indicated by reference numeral 240. However, it is clear that a different predetermined number 240 transform coefficients may also be selected, as already explained above.
[0082] For both of the above described embodiments, the first coefficient scanning order 110 and the second coefficient scanning order 114 match at the last scanned position 101 and a predetermined number 240 transform coefficients upstream of the last scanned position 101. In the case of overlapping the first coefficient scanning order 110 and the second coefficient scanning order 114 shown in FIG. 7 (see decoding 109 for the first coefficient scanning order 110 and decoding 113 for the second coefficient scanning order 114), there are transform coefficients until both scans are identical upstream of the last scanned position 101. In the case of the transform coefficient block 104 shown in FIG. 7, there are 10 transform coefficients until both scans are identical upstream of the last scanned position 101. The predetermined number 240 transform coefficients may be set to a number within the range of 3 transform coefficients, up to the maximum number of transform coefficients until the first coefficient scanning order 110 and the second coefficient scanning order 114 match upstream of the last scanned position 101. The predetermined number 240 of transform coefficients may be set to a number in the range of 3 to 10 transform coefficients or 3 to 9 transform coefficients, such as 8 transform coefficients.
[0083] It will be noted that the first probability model 2361 and the second probability model 2362 of the first embodiment described above may be different from the first probability model 2381 and the second probability model 2382 of the second embodiment described above.
[0084] Figure 10 illustrates, on the left, a transform coefficient block 104 for which a predetermined number 240 of transform coefficient blocks 104 is set to 8 transform coefficients and for which a first coded transform coefficient position 102 of the transform coefficient block 104 is equal to transform coefficient 8. In addition, Figure 10 illustrates, on the right, a transform coefficient block 104 having a first coded transform coefficient position 102 equal to the last scanned position 101 described above.
[0085] According to the embodiment shown in Figures 11a and 11b, the set of available transforms 130 shown and described with respect to Figure 7 includes one or more multi-stage transforms 136 composed of a primary transform 136a outside the predetermined sub-area 106, corresponding to the concatenation of a primary transform 136a and a secondary transform 136b within the predetermined sub-area 106. In other words, as shown in the top right corner of Figure 11a, for example, in a forward transform performed by the encoder, the primary transform 136a is applied to the entire sample block 84, i.e. within the predetermined sub-area 106 and outside the predetermined sub-area 106, to determine the processed coefficient block 84', and the secondary transform is applied only to the predetermined sub-area 100 of the processed coefficient block 84' to determine the transform coefficient block 104. For example, in an inverse transform performed by the decoder, the inverse of the secondary transform 136b is applied to a predefined sub-area 106 of the transform coefficient block 104 to determine the processed coefficient block 84', and the inverse of the primary transform 136a is applied to the entirety of the processed coefficient block 84' to determine the sample block 84. Alternatively, as shown in the top left of Fig. 11a, it is also possible to apply the primary and secondary transforms in one transform step, where only the secondary transform 136b is applied within the predefined sub-area 106, and the primary transform 136a is applied within and outside the predefined sub-area 106. One or more multi-stage transforms 136 are included in the second set 134 of one or more available transforms.
[0086] Additionally, the set of available transforms 130 includes a set of primary dedicated transforms 138 that includes one or more first primary dedicated transforms from those comprised in the first set of one or more available transforms 132, and one or more second primary dedicated transforms included in the second set of one or more available transforms 134. FIG. 11a illustrates the first set of one or more available transforms 132 that is comprised of one first primary dedicated transform T0, and FIG. 11b illustrates the first set of one or more available transforms 132 that is comprised of N1 first primary dedicated transforms T1-T2. N111a shows a first set 132 of one or more available transforms, which are made up of T1...T N1 , and the one or more second primary-only transformations in FIG. 11b are denoted by T N1+1 …T N2 and is given the reference symbol.
[0087] Although the following embodiment is described with respect to FIG. 11b, it is clear that it is also possible to use the introduced signaling of the underlying transform 131 of the transform coefficient block 104 for a set 130 as shown in FIG. 11a.
[0088] According to the embodiment shown in Fig. 11b, the decoder is configured to decode a secondary transform indicator 124 from the data stream. The secondary transform indicator 124 indicates whether the underlying transform 131 of the transform coefficient block 104 is a multi-stage transform, i.e. one transform from one or more multi-stage transforms 136 in the set 136, or whether the underlying transform 131 of the transform coefficient block 104 is a primary-only transform, i.e. a transform from the set 138. If the secondary transform indicator 124 indicates that the underlying transform 131 of the transform coefficient block 104 is a primary-only transform, the decoder is configured to decode, from the data stream, a transform indicator 126 that identifies a primary-only transform from the set 138 of primary-only transforms, e.g. a primary transform indicator.
[0089] According to an additional or alternative embodiment shown in FIG. 11b, the decoder is configured to decode a secondary transform indicator 124 from the data stream, the secondary transform indicator 124 indicating whether the underlying transform 131 of the transform coefficient block 104 is a multi-stage transform 136, and if so, a secondary transform 136b of the multi-stage transform of the underlying transform 131 of the transform coefficient block 104, i.e., T (s)or indicates whether the underlying transform 131 of the transform coefficient block 104 is a primary only transform, i.e., a transform in the set 138. In addition, the decoder decodes a primary transform indicator 126 from the data stream, which identifies a primary only transform from the set 138 of primary only transforms, i.e., one of the sets 138, in the case where the secondary transform indicator 124 indicates that the underlying transform 131 of the transform coefficient block 104 is a primary only transform, and identifies a primary transform 136a of the multi-stage transform in the case where the secondary transform indicator 124 indicates that the underlying transform 131 of the transform coefficient block 104 is a multi-stage transform, i.e., a transform of the set 136, where the set 136 of one or more multi-stage transforms includes more than one multi-stage transform with mutually different primary transforms 136a. Thus, in this case, the primary transform indicator 126 is configured to indicate a primary only transform from the set 138 of primary only transforms, or to indicate a primary transform 136a for the multi-stage transform depending on what the secondary transform indicator 124 indicates.
[0090] According to an additional or alternative embodiment shown in Fig. 11b, the decoder is configured to decode a primary transformation indicator 126 from the data stream. The primary transformation indicator 126 is a representation of one or more first primary dedicated transformations T1...T N1 , i.e., the primary transformations of the first set of transformations 132 and one or more second primary-only transformations T N1+1 …T N2 , i.e., a first transform from a set of primary-only transforms 138 that includes the second set of transforms 134. The first transform is a first primary-only transform T1...T N1 , the decoder is configured to decode a secondary transformation indicator 124 from the data stream, the secondary transformation indicator 124 being one or more first primary dedicated transformations T1...T N1 and a multi-stage transform 136, e.g., one or more second primary-only transforms T N1+1 …T N2Instead, the first transformation is a first primary-only transformation T1...T N1 In the case where the transform coefficient block 104 is one of the above, the underlying transform 131 of the transform coefficient block 104 is one or more first primary dedicated transforms T1...T2, among which some transforms can be mutually equivalent. N1 and one or more primary transformations T1 of the multi-stage transformation 136 (p) ~T N3 (p) The transform 131 underlying the transform coefficient block 104 may be a multi-stage transform in the case where the first transform is a primary transform of a multi-stage transform. N1+1 …T N2 In the case where the first transformation is one of the first primary dedicated transformations T1...T2, one second primary dedicated transformation is indicated by the primary transformation indicator 126. Thus, the first transformation may be one or more of the first primary dedicated transformations T1...T2. N1 In one case, the secondary transform indicator 124 indicates the transform 131 underlying the transform coefficient block 104, and indicates that the first transform is a direct transformation of one or more second primary-only transforms T N1+1 …T N2 In one of the cases, the primary transform indicator 126 indicates the underlying transform 131 of the transform coefficient block 104 .
[0091] According to an additional or alternative embodiment shown in Fig. 11b, the decoder is configured to decode a primary transformation indicator 126 from the data stream. The primary transformation indicator 126 is a representation of one or more first primary dedicated transformations T1...T N1 and one or more second primary dedicated transformations T N1+1 …T N2 1 shows a first transform from a set including one or more primary transforms T1 of multi-stage transform 136. (p) ~T N3 (p) The first primary dedicated transformation T1…T N1If so, the decoder is configured to decode a secondary transform indicator 124 from the data stream, which identifies an underlying transform 131 of the transform coefficient block 104 from a set that includes a first primary-only transform and one or more multi-stage transforms that are equal to the first primary-only transform, e.g., the first primary-only transform indicated by the primary transform indicator 126.
[0092] According to an embodiment, the decoder 20 is configured to perform decoding of the primary transform indicator 126 from the data stream using context-adaptive entropy decoding using a predetermined probability model, and to determine the predetermined probability model depending on where the first coded coefficient position 102 is located within the transform coefficient block 104.
[0093] According to an embodiment, the decoder 20 determines the predetermined probability model depending on where the first coded coefficient position 102 is located within the transform coefficient block 104: If the first coded coefficient position 102 matches the last scanned position 101, then set the predetermined probability model to a first probability model; setting the predetermined probability model to a second probability model if the first coded coefficient position 102 is less than or equal to a predetermined number 240 of transform coefficients 120 away from the last scanned position 101 according to the first coefficient scanning order 110; and setting the predetermined probability model to a third probability model if the first coded coefficient position 102 is greater than a predetermined number 240 transform coefficients away from the last scanned position 101 according to the first coefficient scanning order 110.
[0094] The first coefficient scanning order 110 and the second coefficient scanning order 114 coincide at the last scanned position 101 and a predetermined number 240 of transform coefficients 120 upstream of the last scanned position 101 .
[0095] According to an alternative embodiment, the decoder 20 determines the predetermined probability model depending on where the first coded coefficient position 102 is located within the transform coefficient block 104: setting the predetermined probability model to a first probability model if the first coded coefficient position 102 is less than or equal to a predetermined number 240 transform coefficients away from or coincides with the last scanned position 101 according to the first coefficient scanning order 110; and setting the predetermined probability model to the second probability model if the first coded transform coefficient position 102 is greater than a predetermined number 240 coefficients away from the last scanned position 101 according to the first coefficient scanning order 110.
[0096] The first coefficient scanning order 110 and the second coefficient scanning order 114 coincide at the last scanned position 101 and a predetermined number 240 of transform coefficients upstream of the last scanned position 101 .
[0097] The above described setting of the predetermined probability model for the context adaptive entropy decoding of the primary transformation indicator 126 from the data stream may include features and / or functionality as described for the setting of the predetermined probability model 232 for the context adaptive entropy decoding 230 of the transformation information 108 from the data stream 14, as shown in Fig. 9. The first probability model, the second probability model and the optional third probability model for the context adaptive entropy decoding of the primary transformation indicator 126 may be different from the first probability model, the second probability model and the optional third probability model for the context adaptive entropy decoding of the transformation information 108.
[0098] According to an embodiment, the primary transformation is equal for all of the one or more multi-stage transformations 136, and the one or more first primary dedicated transformations T0 or T1 to T N1 is equal to one of
[0099] According to an embodiment, there is only one first primary dedicated transformation T0, as shown in FIG. 11a.
[0100] According to an embodiment, the decoder 20 is configured to subject the transform coefficient block 104 to an inverse transformation, eg an inverse transform, that inverts the underlying transform 131 of the transform coefficient block 104 to obtain the sample block 84 .
[0101] According to an embodiment, the decoder 20 uses the sample block 84 to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction.
[0102] 12 shows a decoder 20 decoding a transformed representation of a sample block 84 from a data stream 14. The decoder 20 is configured to decode coefficient position information 150 from the data stream 14. The coefficient position information 150 indicates a first coded coefficient position 102 within a transform coefficient block 104. The coefficient position information 150 may have the same features and / or functionality as described with respect to the coefficient position information 100 of the decoder shown in FIG.
[0103] The decoder 20 is configured to decode values of transform coefficients 120 of a transform coefficient block 104 located from a first coded coefficient position 102 towards a last scanned position 101 according to a predetermined coefficient scanning order 110, and to infer that transform coefficients 112 of a transform coefficient block 104 located upstream of a first coded coefficient position 102 according to a predetermined coefficient scanning order 110 are zero. As shown in Figure 12, the transform coefficients 112 within a shaded area of the transform coefficient block 104 are inferred to be zero.
[0104] The decoder is configured to check (152) whether all transform coefficients 118 of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to a predetermined coefficient scanning order 110, i.e., the transform coefficients indicated by x in FIG. 12, are zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104. This check is performed in the embodiment described later in a manner in which the coefficients are checked for their zero-ness individually based on the corresponding importance flag. However, alternatives exist. For example, this check 152 may be performed in a sub-block manner, and the predetermined sub-area 106 may encompass all sub-blocks except for the n×m sub-block in the upper left corner of the block 104 that contains some sub-blocks of the lowest components, for example, the sub-block that contained the last scanned position 101 together with the DC sub-block that contains the DC coefficient. n may be equal to m, for example, n may be 4, and for example, m may be 4. More precisely, the transform coefficient block may be subdivided into subblocks, each subblock being, for example, 4×4 transform coefficients in size, such that the top left subblock is the subblock with the lowest spectral content. Each subblock may be indicated, for example, by an index or coordinate, e.g., xS and yS, defining the position of the respective subblock within the transform coefficient block 104, with indexing starting at zero, where xS indicates the subblock column of the respective subblock and yS indicates the subblock row of the respective subblock, i.e., subblock (xS, yS)=(0,0) is the DC subblock. The predetermined coefficient scan order 110 may traverse the coefficients of the block 104 in a subblock manner, i.e., all coefficients within a subblock are traversed before proceeding to the next subblock. The subblocks are traversed in a manner similar to the scan within each subblock, i.e., diagonally.For each subblock, except for the subblock containing the last scanned position 101 together with the subblock of the lowest spectral component, a subblock flag may be transmitted in the data stream, i.e. decoded by the decoder or coded therein by the encoder, indicating for each subblock whether any significant coefficients are contained within the respective subblock. Based on the subblock flags, the decoder may check whether significant values are present within any subblock outside the predetermined area, i.e. any subblock between the lowest spectral component of n×n and the subblock containing the last coded coefficient. This measurement tests whether all transform coefficients 118 of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to the predetermined coefficient scanning order 110 are zero, in case they are not located within the predetermined subarea 106 of the transform coefficient block 104, i.e. all coded subblock flags for the subblocks between the n×n subblock and the subblock containing the last coded coefficient are zero. For example, in the case where the predetermined area is 16x16 transform coefficients in size, i.e., 4 sub-blocks in width and 4 sub-blocks in height, it is checked (152) whether a sub-block outside the predetermined sub-area 106, e.g., a sub-block indicated by coordinates xS>3 or yS>3, contains one or more significant transform coefficients.
[0105] If all transform coefficients 118 of a transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to a predetermined coefficient scanning order 110 are zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, the decoder 20 is configured to decode (153) transform information 154 from the data stream 14 and use the transform information 154 to identify (155) an underlying transform 131 of the transform coefficient block 104 from a set of available transforms 130, for example from a second set 134 of one or more available transforms from the set of available transforms 130.
[0106] If all transform coefficients 118 of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to the predetermined coefficient scanning order 110 are non-zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, the decoder reduces the set of available transforms 130 to the first set of one or more available transforms 132 by removing from the set of available transforms 130 the second set of one or more available transforms 134, and determines the underlying transform 131 of the transform coefficient block 104 from the first set of one or more available transforms 132. This is also explained in the following manner. If a sub-block is located outside a predetermined area, e.g., the top left 16×16 coefficients, and it is significant, i.e., for example, if each sub-block contains at least one non-zero coefficient, it follows that only a limited set of transforms can be utilized, e.g., only the transforms of the first set of one or more available transforms 132. If the set 132 contains only one transform, for example, only DCT-II, then the value of mts_idx may be inferred to be zero.
[0107] According to an embodiment, the set of available transforms 130 may include one or more first primary dedicated transforms T1...T2, which may be included in a first set of one or more available transforms 132, for example as shown in Fig. 11a or 11b.N1 , and one or more second primary dedicated transformations T N1+1 …T N2 Preferably, the set of available transformations 130 may include a first primary dedicated transformation T0 and one or more second primary dedicated transformations T1...T2, as shown in FIG. N Thus, in the second case where all transform coefficients 118 of the transform coefficient block 104 outside the predetermined sub-area 106 of the transform coefficient block 104 are non-zero, as indicated by x in Fig. 12, the decoder may determine one first primary dedicated transform T0 as the underlying transform 131 of the transform coefficient block 104. In the other case where all transform coefficients 118 of the transform coefficient block 104 outside the predetermined sub-area 106 of the transform coefficient block 104 are zero, as indicated by x in Fig. 12, the decoder may determine the underlying transform 131 of the transform coefficient block 104 from the set 130 by an index transmitted in the data stream for the block 104, i.e., in this other case, decoded from the data stream by the decoder and coded thereto by the encoder. The set 130 of available transforms may include five different options, and one transform T0 may be a DCT-II-DCT-II transform. The latter example may be combined with the above-mentioned example of checking for zero degrees outside the predefined area subblock scheme, for example. In addition, in this embodiment, the presence of a coding option for block 104 may be optional, according to which the underlying transform 131 of block 104 is a combination of the primary transform determined just as outlined with the secondary transform. For example, it may be that if the position of the last coded transform coefficient satisfies a certain condition, then the further index selects a secondary transform from a set of secondary transforms. This set may include, as an option, a non-secondary transform, i.e., a distinguished transform that effectively leaves the primary transform as a primary-only transform. If the certain condition is not met, the secondary transform is not used either.
[0108] The transform 131 below the transform coefficient block 104 according to the transform coefficient block 104 defines a transformed representation, and the predetermined coefficient scan order 110 scans the transform coefficients 120 in such a manner that there are one or more transform coefficients 118, i.e., a transform coefficient outside the predetermined sub-area 106, scanned by the predetermined coefficient scan order 110 between two transform coefficients 120 located inside the predetermined sub-area 106.
[0109] According to an embodiment, the decoder is configured to check whether the first coded coefficient position 102 is located within a predetermined sub-area 106 of the transform coefficient block 104 and to check (152) whether all transform coefficients 118 located outside the predetermined sub-area 106 of the transform coefficient block 104 and located from the first coded coefficient position 102 towards the last scanned position 101 according to the predetermined coefficient scanning order 110 are zero. Optionally, the check 152 is only performed if the first coded coefficient position 102 is located within the predetermined sub-area 106 of the transform coefficient block 104. This is due to the fact that in the case where the first coded coefficient position 102 is located outside the predetermined sub-area 106 of the transform coefficient block 104, the transform coefficients outside the predetermined sub-area 106 should not be zero.
[0110] According to an embodiment, the decoder 20 is configured to perform decoding 153 of the transformation information 154 from the data stream 14 using context adaptive entropy decoding using a predetermined probability model and to determine the predetermined probability model depending on the location of the first coded coefficient position 102 within the transform coefficient block 104. Optionally, the predetermined probability model for the context adaptive entropy decoding of the transformation information 154 from the data stream 14 may be set as described with respect to the predetermined probability model 232 for the context adaptive entropy decoding 230 of the transformation information 108 from the data stream as shown in Fig. 9. However, it is clear that the first probability model, the second probability model and the optional third probability model for the context adaptive entropy decoding of the transformation information 154 may be different from the first probability model, the second probability model and the optional third probability model for the context adaptive entropy decoding of the transformation information 108.
[0111] According to an embodiment, the set of available transformations 130 may be a set of transformations each of which may be a primary transformation T1 within a predefined sub-area 106, as shown in FIG. (p) ~T N2 (p) and the secondary transformation T1 (s) ~T N2 (s) and a linear transformation T1 outside the predetermined sub-area 106 corresponding to the concatenation of (p) ~T N2 (p) The multi-stage transform 136 is included in the second set 134 of one or more available transforms. The set 138 of primary-only transforms is then composed of the first set 132 of one or more available transforms and includes the primary transform T1 for all of the one or more multi-stage transforms 136. (p) ~T N2 (p) and one or more second primary dedicated transformations T1 to T2 included in a second set 134 of one or more available transformations. N1 Includes.
[0112] According to an embodiment, the set of available transforms 130 described above and shown in Fig. 11a is used. The decoder 20 is configured to decode a secondary transform indicator 156 from the data stream 14 if all transform coefficients 118 of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to the predetermined coefficient scanning order 110 are zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, the secondary transform indicator 156 indicating whether the underlying transform 131 of the transform coefficient block 104 is a multi-stage transform 136 and indicating any one from one or more multi-stage transforms 136 or indicating whether the underlying transform 131 of the transform coefficient block 104 is a primary-only transform 138. In other words, the secondary transform indicator 156 indicates whether the underlying transform 131 of the transform coefficient block 104 belongs to the multi-stage transform 136 or the primary only transform 138, and if the transform 131 belongs to the multi-stage transform 136, the underlying transform 131 of the transform coefficient block 104 is directly indicated by the secondary transform indicator 156. In addition, in this first case 157, it is checked whether the secondary transform indicator 156 indicates that the underlying transform 131 of the transform coefficient block 104 is the primary only transform 138, and if the secondary transform indicator 156 indicates that the underlying transform 131 of the transform coefficient block 104 is the primary only transform 138, the decoder 20 is configured to decode from the data stream 14 a transform indicator 160, e.g. a primary transform indicator, that identifies a primary only transform from the set of primary only transforms 138. In a second case 159, if all transform coefficients 118 of a transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to a predetermined coefficient scanning order 110 are not zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, then the transform of the underlying layer of the transform coefficient block is the first primary dedicated transform T0.
[0113] According to an embodiment, the set of available transforms 130 described above and shown in Fig. 11a is used. The decoder 20 is configured to decode a primary transform indicator 160 from the data stream 14 if all transform coefficients 118 of a transform coefficient block 104 located from a first coded coefficient position 102 towards a last scanned position 101 according to a predetermined coefficient scanning order 110 are zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, the primary transform indicator 160 being indicative of a first primary dedicated transform T0 and one or more second primary dedicated transforms T1-T2. N1 If the first transform is a first primary dedicated transform T0, the decoder 20 decodes from the data stream 14 a secondary transform indicator 156 that identifies the underlying transform 131 of the transform coefficient block 104 from a set that includes the first primary dedicated transform T0 and the multi-stage transform 136. If the first transform is one or more of the second primary dedicated transforms T1-T N1 , the underlying transform 131 of the transform coefficient block 104 is one second primary-only transform, i.e., the second primary-only transform indicated by the primary transform indicator 160. If all transform coefficients 118 of the transform coefficient block 104 located from the first coded coefficient position 102 towards the last scanned position 101 according to the predetermined coefficient scanning order 110 are non-zero if they are not located within the predetermined sub-area 106 of the transform coefficient block 104, the underlying transform 131 of the transform coefficient block 104 is the first primary-only transform T0.
[0114] According to an embodiment, the primary transformation T (p) ~T N2 (p) is equal for all of the one or more multi-stage transforms 136 and is equal to one of the one or more first primary-only transforms, e.g., equal to T0 in FIG. 11a, or equal to T1 through T N1 is equal to one of
[0115] According to an embodiment, there is only one first primary dedicated transformation T0, as shown in FIG. 11a.
[0116] According to an embodiment, the decoder 20 is configured to subject the transform coefficient block 104 to an inverse transform, which reverses the underlying transform 131 of the transform coefficient block 104 , to obtain the sample block 84 .
[0117] According to an embodiment, the decoder 20 is configured to use the sample block 84 for correcting a prediction signal obtained by intra-picture prediction or inter-picture prediction.
[0118] According to an embodiment, an encoder having parallel features and / or functionality to one of the decoders described above with respect to one of Figures 7 to 12 is configured to subject a sample block 84 to an underlying transform 131 of a transform coefficient block 104 to obtain a transform coefficient block 104.
[0119] According to an embodiment, an encoder having parallel features and / or functionality to one of the decoders described above with respect to one of Figures 7 to 12 is configured to derive a prediction residual of a prediction signal obtained by intra-picture prediction or inter-picture prediction and to determine a sample block 84, including, for example, quantization, to represent the prediction residual.
[0120] The following discussion restates the above-described two ways to improve coding efficiency for transform-type signaling.
[0121] 1. Preservation of signaling transformation type after coefficient level in sub-block When the first (last) significant coefficient position 102 in the current transform block 104 is located inside an area where all coefficients are required to be equal to 0 for a particular subset of allowed transforms, i.e., when the first (last) significant coefficient position 102 is located outside a predefined sub-area 106 (e.g., outside a 16×16 area for non-DCT-II transforms as described above), only the subset of allowed transforms that do not have a non-zero requirement may be signaled, e.g., transforms of the first set 132 of available transforms of the set of available transforms 130. In the case where the subset contains only one transform, no signaling is required and the transform is inferred (e.g., the MTS index is not signaled but is instead inferred to be equal to 0, which is illustrated in both simplified syntax diagrams of FIG. 13).
[0122] FIG. 13 shows a simplified syntax diagram with unmodified sub-block (SB) scanning depending on transform selection by mts_idx.
[0123] When the first (last) significant coefficient position 102 in the current transform block 104 is located outside the area where all coefficients are required to be equal to zero for a particular subset of allowed transforms, i.e., when the first (last) significant coefficient position 102 is located inside a predefined sub-area 106 (e.g., inside a 16×16 area for the non-DCT-II transforms described above), the position of each subsequently scanned coefficient is examined (152) as shown in FIG. 12. If at least one coefficient 118 is located in a non-zero area, i.e., outside the predefined sub-area 106, only the subset of allowed transforms that do not have a non-zero requirement may be signaled, e.g., the transforms of the first set 132 of available transforms of the set 130 of available transforms. In the case where the subset contains only one transform, no signaling is required and the transform is inferred (e.g., the MTS index is not signaled and is instead inferred to be equal to zero). This condition is illustrated in the simplified syntax diagram on the right side of FIG. 13 (see the condition on AllLumaCoeffOutside16x16AreZero).
[0124] In the case where an additional transform, e.g., LFNST, can be applied, the selection is signaled (156) before the transform type, which indicates that the additional transform is applied, and only the subset of transforms that are allowed to be combined with the additional transform may be signaled. In the case where the subset contains only one transform, no signaling is necessary and the transform is inferred (e.g., if the LFNST index signaling that LFNST is applied is greater than 0, the MTS index is not signaled and is instead inferred to be equal to 0, which corresponds to the DCT-II, as illustrated in both simplified syntax diagrams of FIG. 13).
[0125] In the case where an additional transform (e.g., LFNST) can be applied, its selection is signaled (156) after the transform type, where the transform type indicates the transform that is not allowed to be combined with the additional transform, and the selection of the additional transform is not signaled but is inferred to be disabled (e.g., if the MTS index, signaling that a non-DCT-II transform is applied, is greater than 0, the LFNST index is not signaled but is instead inferred to be equal to 0, which corresponds to disabling LFNST).
[0126] 2. Signal transformation type after the first (last) significant coefficient position in the subblock and before the coefficient level After the first (last) significant coefficient position 102 in the current transform block 104 is signaled (100) and all coefficients are located inside the area required to be equal to 0 for a particular subset of allowed transforms, i.e., after the first (last) significant coefficient position 102 is located outside the predefined sub-area 106 (e.g., outside the 16×16 area for non-DCT-II transforms described above), only the subset of allowed transforms that do not have a non-zero requirement may be signaled, for example, the transforms of the first set 132 of available transforms of the set 130 of available transforms as shown in FIG. 8. In the case where the subset contains one transform, no signaling is required and the transform is inferred (e.g., the MTS index is not signaled and is instead inferred to be equal to 0). This condition is illustrated in both simplified syntax diagrams in FIG. 14 (see the condition on LastCoeffPosY in 16×16).
[0127] FIG. 14 shows a simplified index diagram with modified sub-block (SB) scanning depending on transform selection by mtx_idx.
[0128] When a transform is signaled that requires all coefficients outside a particular area, i.e., a predefined sub-area 106, to be equal to zero, the scanning order is changed in such a way that only sub-blocks and coefficients inside this area, i.e., the predefined sub-area 106, are in the scanning path 114, as shown on the left side of Figure 3 and shown in Figure 7. This condition is also illustrated in both simplified syntax diagrams in Figure 14 (see the condition for mtx_idx>0).
[0129] In the case where an additional transform, e.g., an LFNST, can be applied, its selection 124 is signaled after the transform type, which indicates a transform that is not allowed to be combined with the additional transform, e.g., the transform of the second primary-only transform, and the selection of the additional transform is not signaled but is inferred to be disabled (e.g., if the MTS index is greater than 0, for which a non-DCT-II transform is applied to a signal, the LFNST index is not signaled but is instead inferred to be equal to 0, which corresponds to disabling LFNST, as illustrated in the simplified syntax diagram on the left of FIG. 14).
[0130] In addition to the previous case, the signaling of the transform type is done using a context-adaptive entropy coding 230, e.g., a context-adaptive binary arithmetic coding (CABAC), as shown in Fig. 9. In this case, the context selection depends on the condition of whether to allow to apply an additional transform (e.g., LFNST). This may be the number 240 non-zero coefficients in the current block, i.e., the current transform coefficient block 104, inferred from the first (last) significant coefficient position 102. If applying an additional transform to the DC coefficient, i.e., the last scanned position 101, i.e., the top-left (0,0) zero frequency position, results in an identical DC coefficient, it does not make sense to apply and signal such an additional transform in the case where only one DC coefficient is present in the current transform block, i.e., the case where the first coded coefficient position 102 coincides with the last scanned position 101. Thus, if the last (first) significant position points to the DC position, which is also the first and last position in the scanning order, no additional transformation needs to be signaled and a specific context A, e.g., the first probability model, is selected for the MTS index. This case is illustrated on the right side of FIG. 10. Furthermore, to reduce the complexity in terms of the number of multiplications, a specific maximum number of 240 coefficients (e.g., 8) may be allowed for the additional transformation in the scanning order 110 from the first (last) significant position 102 to the DC, i.e., the last scanned position 101. This case is illustrated on the left side of FIG. 10. In all other cases, where an additional transformation can be applied and / or an indication is signaled, another context B, e.g., the second probability model, is selected. In summary, the condition for context selection based on the previous embodiment is: If the current transform block 104 has more non-zero coefficients than DC and there are 8 or fewer coefficients in the scan order 110 from the last significant position to DC, select context A, e.g., the second probability model 2362; Otherwise, select context B.
[0131] Another embodiment has more than two contexts depending on the condition, If the current transform block 104 has a non-zero coefficient less than or equal to DC, select context A, i.e. the first probability model 2361. Otherwise, if there are 8 or fewer coefficients in the scan order from the last significant position to DC, select context B, i.e., the second probability model 2362. Otherwise, select context C, i.e. the third probabilistic model 2363.
[0132] The condition may also apply to multiple transform blocks, e.g., there must be more than DC coefficients for a luma block and two chroma blocks, or for more than one luma block in the case where the luma transform block is split into multiple (e.g., four) transform blocks.
[0133] FIG. 10 shows an 8x8 block with four 4x4 sub-blocks and a maximum of eight nonzero coefficients in scan order (left), or an 8x8 block with only one nonzero coefficient in the DC position (right).
[0134] In the case where an additional transform (e.g., LFNST) can be applied, its selection is signaled before the transform type, which indicates that an additional transform is applied, and only the subset of transforms allowed to be combined with the additional transform may be signaled. In the case where the subset contains only one transform, no signaling is required and the transform is inferred (e.g., if the LFNST index signaling that LFNST is applied is greater than 0, the MTS index is not signaled and is instead inferred to be equal to 0, which corresponds to DCT-II, as illustrated in the simplified syntax diagram on the right side of FIG. 14).
[0135] 3. Implementation Examples The linear transformation T i and T i(p) teeth, DCT-II (or DCT-III), where DCT stands for discrete cosine transform DST-IV, DST stands for discrete sine transform DCT-IV DST-VII Identity transformation may include one or more of:
[0136] Linear transformation T i and T i (p) may be a separable transformation.
[0137] Secondary transformation T i In the forward direction in the encoder, the T i (p) 104 to obtain sample block 84. -1 By applying i (s) T i (p) Invert.
[0138] The following remarks should be made: the orders 114 and 110 are not limited to the shown example of diagonal scanning (horizontally and vertically) from the highest frequency coefficient (located in the opposite corner of the block 104 to the last scanned position 101, which may be the DC coefficient), and it is not necessary to scan the coefficients according to a subblock-wise scanning process that first scans all coefficients in a subblock before proceeding to another subblock. Furthermore, the subarray 106 is not limited to being 16×16 coefficients in size, but may be any rectangular subarray of coefficients extending from the last scanned position 101 to the opposite corner in the block 104.
[0139] Moreover, Fig. 11a is merely exemplary. More than one primary-only transform may be included in the set 132. This is illustrated in Fig. 11b. (p) ~T N3 (p) may or may not have different numbers in set 136 , one or more of which may belong to a primary dedicated transformation of set 132 , although they may not be equal to each other.
[0140] Furthermore, as exemplarily shown in FIG. (p) =…=T N2 (p) = T0 constellation, it is possible to consider indicator 124 as an indication that in cases that do not indicate a primary dedicated transform, a multi-stage transform is selected, or in cases that do not indicate a primary dedicated transform, a secondary transform is selected. Alternatively, indicator 124 may be interpreted as an indication of whether a secondary transform is still available.
[0141] Although some aspects have been described in the context of an apparatus, it is clear that those aspects also represent a description of the corresponding method, in which a block or device corresponds to a method step or feature of a method step. Similarly, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the method steps may be performed by (or using) a hardware apparatus, such as, for example, a microprocessor, a programmable computer, or an electronic circuit. In some embodiments, one or more of the most important method steps may be performed by such an apparatus.
[0142] An inventive encoded signal, such as a video signal, may be stored on a digital storage medium or transmitted over a transmission medium, such as a wireless or wired transmission medium, such as the Internet.
[0143] Depending on the requirements of a particular implementation, the embodiments of the invention may be implemented in hardware or software. The implementations may be implemented using, for example, a digital storage medium, floppy disk, DVD, Blu-Ray, CD, ROM, PROM, EPROM, EEPROM, or flash memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective methods are performed. Thus, the digital storage medium may be computer readable.
[0144] Some embodiments according to the invention include a data carrier having electronically readable control signals capable of cooperating with a programmable computer system to cause one of the methods described herein to be performed.
[0145] Generally, embodiments of the present invention may be implemented as a computer program product having program code operable to perform one of the methods when the computer program product runs on a computer. The program code may for example be stored on a machine readable carrier.
[0146] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0147] In other words, an embodiment of the inventive method is, therefore, a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
[0148] A further embodiment of the inventive method is therefore a data carrier (or a digital storage medium or a computer readable medium) comprising a computer program recorded thereon for performing one of the methods described herein. The data carrier, digital storage medium or recorded medium is typically tangible and / or non-transitory.
[0149] A further embodiment of the inventive method is therefore a data stream or a sequence of signals representing the computer program for performing one of the methods described herein, The data stream or the sequence of signals may be adapted to be transferred via a data communication connection, for example via the Internet.
[0150] A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.
[0151] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0152] Further embodiments according to the invention include an apparatus or system configured to transfer (e.g. electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may be a computer, a mobile device, a memory device, etc. The apparatus or system may for example include a file server for transferring the computer program to the receiver.
[0153] In some embodiments, a programmable logic device (e.g., a field programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. In general, the methods are preferably performed by any hardware apparatus.
[0154] The devices described herein may be implemented using a hardware device, or using a computer, or using a combination of a hardware device and a computer.
[0155] The apparatus described herein, or components of the apparatus described herein, may be implemented at least in part in hardware and / or software.
[0156] The methods described herein may be performed using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0157] The methods described herein, or elements of the apparatus described herein, may be implemented at least in part in hardware and / or software.
[0158] The above described embodiments are merely illustrative of the principles of the present invention. It will be understood that modifications and variations of the arrangements and details described herein will be apparent to those skilled in the art. It is therefore intended to be limited only by the scope of the appended claims and not by the specific details presented by the description and illustration of the embodiments herein.
Claims
1. A decoder (20) for decoding a transformed representation of a block (84) from a data stream (14), said decoder (20) comprising: decoding coefficient position information (100) from the data stream (14), the coefficient position information (100) indicating a first coded coefficient position (102) within a transform coefficient block (104); determining, using the initially coded coefficient positions, that at least one non-zero coefficient is located outside a predetermined sub-area (106) of the transform coefficient block (104); reducing the set of available transforms (130) to a first set of one or more available transforms (132) by removing a second set of one or more available transforms (134) from the set of available transforms (130) based on said determining; determining a transform (131) to be applied to the transform coefficient block (104) from the first set (132) of one or more available transforms; using the determined transform (131) to decode (109) values of transform coefficients of the transform coefficient block (104) located from the first coded coefficient position (102) towards the last scanned position (101) according to a first coefficient scanning order (110); A decoder (20).
2. If the first coded coefficient position (102) is located inside the predetermined sub-area (106) of the transform coefficient block (104), checking (111) whether the transform (131) to be applied to the transform coefficient block (104) is within the first set (132) of one or more available transforms of the set (130) of available transforms or the second set (134) of one or more available transforms of the set (130) of available transforms, using transform information (108) transmitted in the data stream; if the transform (131) applied to the transform coefficient block (104) is within the first set (132) of one or more available transforms, decoding (109) values of the transform coefficients of the transform coefficient block (104) located from the first coded coefficient position (102) towards the last scanned position (101) according to the first coefficient scanning order (110), and inferring that the values of the transform coefficients (112) of the transform coefficient block (104) located upstream of the first coded coefficient position (102) according to the first coefficient scanning order (110) are zero; if the transform (131) applied to the transform coefficient block (104) is within the second set (134) of one or more available transforms, decoding (113) the values of the transform coefficients of the transform coefficient block (104) located within the predetermined sub-area (106) and located from the first coded coefficient position (102) towards the last scanned position (101) according to a second coefficient scanning order (114), and inferring that the values of the transform coefficients (116) of the transform coefficient block (104) located upstream of the first coded coefficient position (102) according to the first coefficient scanning order (110) and the transform coefficients of the transform coefficient block (104) located outside the predetermined sub-area (106) are zero; configured to: A decoder (20) according to claim 1.
3. the second coefficient scanning order (114) scans the transform coefficients in the predetermined sub-area (106) without scanning any transform coefficients (118) outside the predetermined sub-area (106) between the transform coefficients in the predetermined sub-area (106), and the first coefficient scanning order (110) scans the transform coefficients in such a manner that there are one or more transform coefficients (118) outside the predetermined sub-area (106) scanned by the first coefficient scanning order (110) between two transform coefficients (120) located inside the predetermined sub-area (106). A decoder (20) according to claim 2.
4. A decoder (20) according to any one of claims 1 to 3, further configured to subject the transform coefficient block (104) to an inverse transform that reverses the transform (131) applied to the transform coefficient block to obtain the block (84).
5. A decoder (20) according to any one of claims 1 to 4, further configured to use said blocks for correcting a prediction signal obtained by intra-picture prediction or inter-picture prediction.
6. An encoder (10) for encoding a transformed representation of a block (84) into a data stream (14), comprising: encoding coefficient position information (100) into the data stream (14), the coefficient position information (100) indicating a first coded coefficient position (102) within a transform coefficient block (104); determining, using the initially coded coefficient positions, that at least one non-zero coefficient is located outside a predetermined sub-area (106) of the transform coefficient block (104); reducing the set of available transforms (130) to a first set of one or more available transforms (132) by removing a second set of one or more available transforms (134) from the set of available transforms (130) based on said determining; determining the transform (131) to be applied to the transform coefficient block (104) from the first set (132) of one or more available transforms; coding (109) values of transform coefficients of the transform coefficient block (104) located from the first coded coefficient position (102) towards the last scanned position (101) according to a first coefficient scanning order (110); An encoder (10) configured to:
7. If the first coded coefficient position (102) is located inside the predetermined sub-area (106) of the transform coefficient block (104), checking (111) whether the transform (131) to be applied to the transform coefficient block (104) is within the first set (132) of one or more available transforms of the set (130) of available transforms or within a second set (134) of one or more available transforms of the set (130) of available transforms; coding (109) values of the transform coefficients of the transform coefficient block (104) located from the first coded coefficient position towards the last scanned position (101) according to the first coefficient scanning order (110) if the transform (131) applied to the transform coefficient block (104) is within the first set (132) of one or more available transforms, wherein a transform coefficient (112) of the transform coefficient block (104) located upstream of the first coded coefficient position (102) according to the first coefficient scanning order (110) is zero; coding (113) values of transform coefficients of the transform coefficient block (104) located within the predetermined sub-area (106) and located from the first coded coefficient position towards the last scanned position (101) according to a second coefficient scanning order (114) if the transform (131) applied to the transform coefficient block (104) is within the second set (134) of one or more available transforms, wherein a transform coefficient (116) of the transform coefficient block (104) located upstream of the first coded coefficient position (102) according to the first coefficient scanning order (110) and a transform coefficient of the transform coefficient block (104) located outside the predetermined sub-area (106) are zero; configured to: An encoder (10) according to claim 6.
8. the second coefficient scanning order (114) scans the transform coefficients in the predetermined sub-area (106) without scanning any transform coefficients outside the predetermined sub-area between the transform coefficients in the predetermined sub-area (106), and the first coefficient scanning order (110) scans the transform coefficients in such a manner that there are one or more transform coefficients (118) outside the predetermined sub-area (106) scanned by the first coefficient scanning order (110) between two transform coefficients (120) located inside the predetermined sub-area (106). An encoder (10) according to claim 7.
9. An encoder (10) according to any one of claims 6 to 8, further comprising a feedback loop arranged to subject the transform coefficient block (104) to an inverse transformation that reverses the transformation (131) applied to the transform coefficient block so as to obtain the block (84).
10. An encoder (10) according to any one of claims 6 to 9, further configured to subject the block (84) to the transformation (131) applied to the transform coefficient block (104) so as to obtain the transform coefficient block (104).
11. An encoder (10) according to any one of claims 6 to 10, further comprising a feedback loop configured to use said block (84) for correcting a prediction signal obtained by intra-picture prediction or inter-picture prediction.
12. The encoder (10) of any one of claims 6 to 11, further configured to derive a prediction residual of a prediction signal obtained by intra-picture prediction or inter-picture prediction, and to determine the block (84) representative of said prediction residual.
13. 1. A method for decoding a transformed representation of a block (84) from a data stream (14), comprising the steps of: decoding coefficient position information (100) from the data stream (14), the coefficient position information (100) indicating a first coded coefficient position (102) within a transform coefficient block (104); determining, using the initially coded coefficient positions, that at least one non-zero coefficient is located outside a predetermined sub-area (106) of the transform coefficient block (104); based on said determining, reducing a set of available transforms (130) to a first set of one or more available transforms (132) by removing a second set of one or more available transforms (134) from said set of available transforms (130), and determining a transform (131) to be applied to said transform coefficient block (104) from said first set of one or more available transforms (132); decoding (109) values of transform coefficients of the transform coefficient block (104) located from the first coded coefficient position (102) towards the last scanned position (101) according to a first coefficient scanning order (110) using the determined transform (131); A method comprising:
14. A method for encoding a transformed representation of a block (84) into a data stream (14), comprising the steps of: encoding coefficient position information (100) into the data stream (14), the coefficient position information (100) indicating a first coded coefficient position (102) within a transform coefficient block (104); determining, using the initially coded coefficient positions, that at least one non-zero coefficient is located outside a predetermined sub-area (106) of the transform coefficient block (104); based on said determining, reducing a set of available transforms (130) to a first set of one or more available transforms (132) by removing a second set of one or more available transforms (134) from said set of available transforms (130), and determining a transform (131) to be applied to said transform coefficient block (104) from said first set of one or more available transforms (132); coding (109) values of transform coefficients of the transform coefficient block (104) located from the first coded coefficient position towards the last scanned position (101) according to a first coefficient scanning order (110), wherein the transform coefficients of the transform coefficient block (104) located upstream of the first coded coefficient position (102) according to the first coefficient scanning order are zero; A method for providing the above.
15. A computer program having a program code for performing the method according to claim 13 or 14, when the computer program runs on a computer.
Citation Information
Patent Citations
Image decoding device, image decoding method, and program
WO2020262011A1
