Coding concepts for transformed representations of sample blocks
By employing different scan orders and reducing the set of available transforms based on coefficient positions, the inefficiencies in transform selection and signaling overhead in video coding are addressed, resulting in improved coding efficiency and reduced bitstream costs.
Patent Information
- Application Number
- JP2024217772
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-11-26
- Filing Date
- 2024-12-12
- Publication Date
- 2026-01-13
- Estimated Expiration
- 2040-11-25
AI Technical Summary
Current video coding techniques, such as the Versatile Video Coding (VVC) draft, face inefficiencies in transform selection and signaling overhead due to the requirement of zeroing out coefficients outside a predetermined area, especially for non-DCT-II transforms, leading to increased complexity and bitstream costs.
Implementing different coefficient scan orders based on the underlying transform type, allowing non-zero coefficients to be within a predetermined sub-area for certain transforms, and reducing the set of available transforms when necessary to minimize decoding/encoding of zero coefficients, thereby optimizing coding efficiency and reducing signaling overhead.
This approach enhances coding efficiency by minimizing the need to decode/encode zero coefficients and reduces bitstream costs through intelligent transform selection and scan order adaptation.
Smart Images

Figure 0007797609000001 
Figure 0007797609000002 
Figure 0007797609000003
Abstract
Description
[Technical Field]
[0001] Embodiments according to the invention relate to a decoder for decoding transformed representations of sample blocks from a data stream, an encoder for encoding transformed representations of sample blocks into a data stream, corresponding methods, a computer program having program code which, when running on a computer, performs the method for decoding / encoding transformed representations of sample blocks 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 also 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 NxN. For example, the HEVC standard specifies the use of DCT-II except for intra-picture predicted 4x4 blocks, for which DCT-VI is used. Higher compression efficiency can be achieved by enabling selection among multiple predefined transform types. 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 syntax by which the transform type selected by the encoder is signaled to the decoder. Transform coefficient-level coding 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 greater 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 that is 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: a syntax indicating the selected transform, e.g., a multiple transform selection (MTS) index, preceded by a transform coefficient level, is coded.
[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 another 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 employed. FIG. 1 illustrates an example of a 32×32 transform block 104 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 backward / reverse diagonal scanning of 4×4 sub-blocks 117 inside the 32×32 transform block 104. DCT-based transforms tend to concentrate energy in the upper left corner 101; therefore, 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 prevent coding and decoding a sequence of zeros before the first non-zero coefficient 102 in the scan order 115, the first (last) non-zero 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 non-zero 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 zero. Figure 2 illustrates this process, in which a 32x32 block of reconstructed residual samples, e.g., sample block 84, is generated by applying a transform to a 32x32 transform block 104, in which 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 transform selection information, e.g., the MTS index, is signaled after the transform coefficient. As a result, the location of the first or last significant coefficient 102 is known. When this coefficient is outside the 16×16 non-zero area, i.e., the predetermined sub-area 106, there is no need to signal the transform selection because the only allowed transform in this case is DCT-II. However, the current design cannot guarantee that all coefficients outside the 16×16 area are equal to zero. This can be seen in the example on the right 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 these non-zero coefficients exist, the encoder constraint must ensure that the signaled transform is DCT-II, for example, by always signaling the MTS index equal to 0. Since the DCT-II is explicitly signaled, but is always required to be zero, this causes signaling overhead. In the following, the non-zero requirement may be defined as all non-zero transform coefficients being located inside a non-zero area, i.e., a predetermined sub-area 106, and all transform coefficients outside the non-zero area must be zero. In the following, two approaches to address this aspect are described. Figure 3 shows on the left side 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 can be combined with DCT-II, and the LFNST index, which indicates whether LFNST is applied and, if so, which kernel, is applied, 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 Figure 13.
[0010] It is therefore desirable to provide a concept for rendering picture coding and / or video coding more efficiently that supports selection between multiple predefined transform types for blocks of a picture. Additionally or alternatively, it is desirable to reduce bitstream and thus signaling costs, e.g., reduce 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] In accordance with a first aspect of the present invention, the inventors of the present application have recognized that a problem is encountered when attempting to enable transform selection for a block of a picture, resulting 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 a transform coefficient block are required to be allowed / located within a predetermined sub-area of the transform coefficient block. Depending on the first-coded coefficient position inside the predetermined sub-area of the transform coefficient block, i.e., the position of the first non-zero coefficient, zero coefficients outside the predetermined 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 toward 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 toward the first-coded coefficient position, which in this latter case can be understood as the last-coded coefficient position. According to a first aspect of the present application, this problem of decoding / coding zero coefficients is overcome by using a different scan order for transform coefficient blocks associated with a transform in a first set of one or more available transforms of a set of available transforms relative to a transform in a second set of one or more available transforms of a set of available transforms. In the case where a 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 a 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 discovered that using different coefficient scan orders depending on the underlying transform of each transform coefficient block is advantageous in terms of improving coding efficiency and reducing signaling overhead.This is based on the idea that a transform can indicate whether all non-zero coefficients are located inside a predetermined sub-area of a transform coefficient block, and thereby a 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 transform coefficient blocks located from the first coded coefficient position toward the last scanned position according to the first coefficient scan order are decoded / coded, and the decoder infers that transform coefficients of transform coefficient blocks located upstream of the first coded coefficient position according to the first coefficient scan order are zero. If the transform underlying the transform coefficient block is within a second set of one or more available transforms, values of transform coefficients of transform coefficient blocks located within the predetermined sub-area and located from the first coded coefficient position toward the last scanned position according to the second coefficient scan order are decoded / coded, and the decoder infers that transform coefficients of transform coefficient blocks located upstream of the first coded coefficient position and transform coefficients of transform coefficient blocks located outside the predetermined sub-area are zero according to the first coefficient scan order. Therefore, since fewer transform coefficients may need to be scanned, decoding / encoding zero coefficients can be avoided, improving coding efficiency.
[0014] Therefore, according to a first aspect of the present application, a decoder / encoder that decodes / encodes 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 within a transform coefficient block. The first-coded coefficient position may indicate either the position of the first non-zero transform coefficient in coefficient scanning order or the position of the last non-zero transform coefficient in 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, within which transform coefficients may be non-zero, and outside which all transform coefficients must be zero for a particular transform. According to an embodiment, when an underlying transform of a transform coefficient block is within a first set of one or more available transforms of a set of available transforms, the transform coefficient block may include non-zero transform coefficients outside a predetermined sub-area. When an underlying transform of a transform coefficient block is within 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 consist of 16x16 transform coefficients. The predetermined sub-area may be located at the top left of the transform coefficient block. If the first coded coefficient position is located within the predetermined sub-area of the transform coefficient block, it is checked whether the underlying transform of the transform coefficient block is within 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 transform information transmitted in the data stream.When the transform underlying 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 transform coefficient blocks located from the first coded coefficient position toward the last scanned position according to a first coefficient scanning order, where 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. When the transform underlying the transform coefficient block is within the 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. When the transform underlying 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 transform coefficient blocks located within a predetermined sub-area and located from the first coded coefficient position toward the last scanned position according to a second coefficient scanning order, where 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. If the transform coefficient block's underlying transform coefficient is within a second set of one or more available transforms, the decoder is configured to infer, according to the first coefficient scanning order, that the transform coefficients of the transform coefficient block located upstream of the initially coded coefficient position and the transform coefficients of the transform coefficient block located outside the predetermined sub-area are zero. The transform coefficients of the underlying transform coefficient block according to the transform coefficient block define a transformed representation. The second coefficient scanning order scans the transform coefficients within the predetermined sub-area without scanning any transform coefficients outside the predetermined sub-area between the transform coefficients within 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, when the first-coded coefficient position is located outside a predetermined sub-area of the transform coefficient block, 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, 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 toward 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, when the first-coded coefficient position is located outside the predetermined sub-area of the transform coefficient block, the decoder can 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 bitstream 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 context-adaptive entropy decoding / encoding, e.g., context-adaptive binary arithmetic coding, using a predetermined probability model, e.g., a binary value that is updated for a particular context, e.g., an estimated probability for a particular LPS (Least Probable Symbol). 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 also 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 a predetermined probability model depending on where a first-coded coefficient position is located within a transform coefficient block, by setting the predetermined probability model to a first probability model, e.g., a first context, if the first-coded coefficient position matches the last-scanned position, to a second probability model, e.g., a second context, if the first-coded coefficient position is a predetermined number of transform coefficients or less away from the last-scanned position according to the first coefficient scanning order, and to 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 for 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 contains only one non-zero transform coefficient, the predetermined probability model may be set to the 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 determine the predetermined probability model depending on where a first-coded coefficient position is located within a transform coefficient block, by setting 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 to set the predetermined probability model to the second probability model if the first-coded transform 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 secondary transforms within the predetermined sub-area, and includes 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 includes one or more multi-stage 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 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, and the secondary transform indicator indicates whether the transform underlying the transform coefficient block is a multi-stage transform, i.e., whether it is within the second set of one or more available transforms, and which one of the one or more multi-stage transforms is the primary-only transform, or whether the transform underlying the transform coefficient block is the 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 that identifies the primary-only transform from the set of primary-only transforms to / from the data stream, for example. 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 to / from the data stream. Thus, high coding efficiency can be achieved because an additional transform indicator is only needed 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 consisting of primary transforms outside the predetermined sub-area and included in a second set of one or more available transforms. Additionally, the set of available transforms includes a set of primary-only transforms including one or more first primary-only transforms from those included 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 is configured to decode / encode a secondary transform indicator from / to the data stream. The secondary transform indicator indicates whether a transform underlying 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 underlying the transform coefficient block is a primary-only transform. In other words, the secondary transform indicator indicates whether the transform underlying 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 / into the data stream, which identifies a primary-only transform from the set of primary-only transforms when the secondary transform indicator indicates that the transform underlying the transform coefficient block is a primary-only transform, and identifies a primary transform of the 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 when the secondary transform indicator indicates that the transform underlying the transform coefficient block is a multi-stage transform. Thus, high variability and flexibility in the selection of the transform underlying the transform coefficient block can be achieved, particularly for multi-stage transforms, resulting in high coding efficiency. In cases where all 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 multi-stage transforms, 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, consisting of primary transforms outside the predetermined sub-area and included in one or more second sets of available transforms. The second set of one or more available transforms may include all multi-stage transforms. Additionally, the set of available transforms includes a set of primary-only transforms, including a first primary-only transform (e.g., a DCT-II transform) from the first set of one or more available transforms, where 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., non-DCT-II 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 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-only transform, the decoder / encoder is configured to decode / code from / into 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-only transform and a multi-stage transform. If the first transform is one of one or more second primary-only transforms, the transform of the underlying layer of the transform coefficient block is one of the second primary-only transforms. In other words, if the primary transform indicator indicates that the first transform is one of one or more second primary-only transforms, the transform of the underlying layer of the transform coefficient block is the indicated second primary-only transform. If the primary transform indicator indicates that the first transform is the first primary-only transform, the transform of the underlying layer of the transform coefficient block is either the first primary-only transform or a multi-stage transform corresponding to a concatenation of the first primary-only 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. This allows for highly efficient selection and indication of the transform of the underlying layer of the transform coefficient block in the data stream, resulting in high coding efficiency.
[0022] According to an embodiment, the set of available transforms includes a set of multi-stage transforms, each of which corresponds to a concatenation of a primary transform and a secondary transform within a predetermined sub-area, consisting of primary transforms outside the predetermined sub-area and included in one or more second sets of available transforms. Additionally, the set of available transforms includes a set of primary-only transforms, including one or more first primary-only transforms from those comprising 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, from a set including one or more first primary-only transforms and one or more second primary-only transforms. If the first transform is a first primary-only transform that is equal to one or more primary transforms of the multi-stage transforms, the decoder / encoder decodes / encodes 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 one or more multi-stage transforms whose primary transform is equal to the first primary-only transform. The special primary and secondary transform indicators result in high coding efficiency and, in particular, enable good selection between different first primary-only transforms and different multi-stage transforms with different primary transforms for selecting the underlying transform of the transform coefficient block. By enabling 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 being 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 a predetermined probability model depending on where a first-coded coefficient position is located within a transform coefficient block, set the predetermined probability model to a first probability model if the first-coded coefficient position matches the last-scanned position, set the predetermined probability model to a second probability model if the first-coded coefficient position is a predetermined number of transform coefficients or less away from the last-scanned position according to the first coefficient scanning order, and 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 first coefficient scanning order. The first and second coefficient scanning orders 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 to determine the predetermined probability model depending on where the first-coded coefficient position is located within the transform coefficient block, by setting 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 to set the predetermined probability model to the second probability model if the first-coded transform 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.
[0026] According to an 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 dedicated transformation.
[0028] According to an embodiment, the encoder is configured to subject the sample block to a transform underlying the transform coefficient block to obtain the transform coefficient block.
[0029] According to an embodiment, the decoder is configured to subject the transform coefficient blocks to an inverse transform that reverses the transform of an underlying layer of the transform coefficient blocks to obtain sample blocks. According to an embodiment, the encoder includes a feedback loop configured to subject the transform coefficient blocks to an inverse transform that reverses the transform of an underlying layer of the transform coefficient blocks to obtain sample blocks.
[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] In accordance with a second aspect of the present invention, the inventors of the present application have recognized that a problem occurs when attempting to enable transform selection for a block of a picture, resulting 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 also meets the non-zero requirement described above, signaling overhead is required to indicate the underlying transform of the transform coefficient block. In accordance with the 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 to the last-scanned position according to a predetermined coefficient scanning order are zero if they are not located within the predetermined sub-area of the transform coefficient block. The inventors have discovered 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 underlying transform of a transform coefficient block is a transform with the non-zero requirement described above by inspection. Thus, it is not necessary to select, for each transform coefficient block, the underlying transform of each transform coefficient block from the set of all available transforms. Instead, this feature makes it possible to reduce the set of all available transforms to relevant transforms, thereby achieving high coding efficiency. Furthermore, since it is not necessary to indicate by an additional syntax element whether the underlying transform of a transform coefficient block is one from the transforms with the non-zero requirement or one from the transforms without the non-zero requirement, high compression can be achieved.
[0033] Therefore, according to a second aspect of the present application, a decoder / encoder that decodes / encodes 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 within a transform coefficient block. The first-coded coefficient position may indicate either the position of the first non-zero transform coefficient in the coefficient scanning order or the position of the last non-zero transform coefficient in the reverse coefficient scanning order. Furthermore, the decoder / encoder is configured to decode / encode values of 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, and to infer that transform coefficients of a transform coefficient block located upstream of the first-coded coefficient position according to the predetermined coefficient scanning order are zero. The transform coefficients of a transform coefficient block located from the first-coded coefficient position toward the last-scanned position according to the predetermined coefficient scanning order may include only transform coefficients having non-zero values, or transform coefficients having zero values and transform coefficients having non-zero values. The decoder / encoder is configured to check whether all transform coefficients of a transform coefficient block located from the first coded coefficient position to 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 predetermined sub-area may define a sub-area of the transform coefficient block, within which the transform coefficients may be non-zero, and outside which 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 if 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 if the 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 toward 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 for 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 toward 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 for the transform coefficient block from the first set of one or more available transforms. The transformation of the underlying transform coefficient blocks according to the transform coefficient blocks defines a transformed representation. The predetermined coefficient scanning order scans the transform coefficients in a manner such that between two transform coefficients located inside the predetermined sub-area, there are one or more transform coefficients outside the predetermined sub-area scanned by the predetermined coefficient scanning order.
[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 performed optionally 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 non-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 transform 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 originally coded coefficient position is located within the transform coefficient block.
[0037] According to an embodiment, the decoder / encoder is configured to, when determining a predetermined probability model depending on where a first-coded coefficient position is located within a transform coefficient block, set the predetermined probability model to a first probability model if the first-coded coefficient position matches the last-scanned position, 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 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 the predetermined coefficient scanning order, or to set the predetermined probability model to a second probability model if the first coded transform 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 of which corresponds 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 one or more second sets of available transforms. In other words, one or more second sets of available transforms of the set of available transforms include two or more multi-stage transforms. In addition, the set of available transforms includes a set of primary-only transforms from the one or more first sets of available transforms, consisting of 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 one or more second sets of 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 a 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 the 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 they are not located within a predetermined sub-area of the transform coefficient block, the underlying transform of the transform coefficient block is the first primary-only transform. According to this embodiment, if the transform coefficient block includes non-zero transform coefficients outside the predetermined sub-area, it is possible to infer that the underlying transform of the transform coefficient block is the first primary-only transform. Therefore, for such transform coefficient blocks, the data stream does not need to include transform information, thereby achieving high compression. Furthermore, the secondary transform indicator can be used to explicitly indicate a multi-stage transform as the underlying transform of the transform coefficient block, and the primary transform indicator can be used in addition to the secondary transform indicator to clearly indicate a primary-only transform as the underlying transform of the transform coefficient block. Note that this special transform selection can also indicate the first primary-only transform as the underlying transform of the transform coefficient block for blocks having all non-zero transform coefficients inside the predetermined sub-area, thereby resulting in good transform selection and achieving high compression.
[0040] According to an embodiment, the set of available transforms each corresponds to a concatenation of a primary transform and a secondary transform within the predetermined sub-area, and includes a multi-stage transform, e.g., a set of multi-stage transforms, consisting of primary transforms outside the predetermined sub-area and included in the second set of one or more available transforms. Additionally, the set of available transforms includes a set of primary-only transforms consisting of 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 a predetermined coefficient scanning order are zero if they are not located within the predetermined sub-area of the transform coefficient block, decoding / encoding a primary transform indicator from / to the data stream, the primary transform indicator indicating a first transform from a set including a first primary-only transform and one or more second primary-only transforms, e.g., the set of primary-only transforms; configured to 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 if the first transform is a first primary-only transform; In the case where the first transform is one of one or more second primary-only transforms, the underlying transform of the transform coefficient block is one second primary-only 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 underlying layer of the transform coefficient block is the first primary-only transform.
[0041] According to an 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 dedicated transformation.
[0043] According to an embodiment, the encoder is configured to subject the sample block to a transform underlying the transform coefficient block to obtain the transform coefficient block.
[0044] According to an embodiment, the decoder is configured to subject the transform coefficient blocks to an inverse transform that reverses the transform of an underlying layer of the transform coefficient blocks to obtain sample blocks. According to an embodiment, the encoder includes a feedback loop configured to subject the transform coefficient blocks to an inverse transform that reverses the transform of an underlying layer of the transform coefficient blocks to obtain sample blocks.
[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 for decoding / encoding a transformed representation of a sample block from / to a data stream, the method including decoding / encoding coefficient position information from / to the data stream, the coefficient position information indicating a first-coded coefficient position within a transform coefficient block. The method includes 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 includes 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 the set of available transforms. The decoding method may perform the check using 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 includes decoding / encoding values of transform coefficients of a transform coefficient block located from the first-coded coefficient position toward the last-scanned position according to a first coefficient scanning order, wherein 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 decoding method 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, wherein 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 decoding method includes inferring, according to a first coefficient scanning order, 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. Transformations of the underlying transform coefficient blocks according to the transform coefficient blocks define a transformed representation. The second coefficient scanning order scans transform coefficients within a predetermined sub-area without scanning any transform coefficients outside the predetermined sub-area between transform coefficients within the predetermined sub-area, and the first coefficient scanning order scans transform coefficients in a manner such 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, the method comprising decoding / encoding coefficient position information from / to the data stream, the coefficient position information indicating a first-coded coefficient position within 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 toward a last-scanned position according to a predetermined coefficient scanning order, wherein 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. The decoding method 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 toward 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 a 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 method includes decoding / encoding transform information from / to a 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 a transform coefficient block located from the first coded coefficient position toward 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 transforms of the transform coefficient block according to the transform coefficient block define 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, but the method can be completed with all the features and functionality described with respect to the encoder / decoder.
[0050] The embodiments relate to data streams 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 upon illustrating the principles of the invention.In the following description, various embodiments of the invention are described with reference to the following drawings: [Brief explanation of the drawings]
[0053] [Figure 1] An example of a 32x32 transform block subdivided into 64 4x4 sub-blocks is shown. [Figure 2] Shown is the reconstruction of a 32x32 block, where only the first 16x16 coefficients can be non-zero. [Figure 3] 1 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. [Figure 5] 1 shows 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] 10 illustrates the selection of an underlying transform for a transform coefficient block in the case where the first coded coefficient position is located outside a predetermined sub-area, according to an embodiment. [Figure 9] 1 illustrates CABAC coding of transformation information according to an embodiment. [Figure 10] 10 illustrates transform coefficient blocks having different numbers of non-zero transform coefficients according to an embodiment. [Figure 11a] 1 shows a set of available transformations according to a first embodiment. [Figure 11b] 10 shows a set of available transformations according to a second embodiment. [Figure 12] 1 illustrates a decoder that checks whether transform coefficients outside a predetermined sub-area are zero, according to an embodiment. [Figure 13] A first simplified syntax diagram is shown. [Figure 14] A second simplified syntax diagram is shown. DETAILED DESCRIPTION OF THE INVENTION
[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, numerous details are set forth to provide a more thorough explanation of embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in less detailed block diagram form to avoid obscuring 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 by presenting a description of a video encoder and a video decoder of a block-based predictive codec for coding pictures of 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 video decoder are described with reference to Figures 4-6. While the embodiments of the present application described herein may be readily incorporated into the video encoder and 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 video decoder of Figures 4 and 5.
[0059] FIG. 4 illustrates an apparatus for predictively coding a picture 12 or a video composed of a sequence of pictures 12 into a data stream 14. Block-based predictive coding is used for this purpose. Furthermore, transform-based residual coding is illustratively used. The apparatus or encoder is indicated using the reference numeral 10. FIG. 5 illustrates 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 illustratively using transform-based residual decoding; an apostrophe is used to indicate that the picture 12′ as reconstructed by the decoder 20 deviates from the picture 12 originally encoded by the apparatus 10 in terms of coding loss introduced by quantization of the predictive residual signal. While FIGS. 4 and 5 illustratively use transform-based predictive residual coding, embodiments of the present application are not limited to this type of predictive residual coding. This also applies to other details regarding FIGS. 4 and 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 that 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 that subtracts the prediction signal from the original signal, i.e., the current picture 12. The encoder 10 may then further include a transformer 28 that subjects the prediction residual signal 24 to a spatial-to-spectral transformation to obtain a spectral-domain prediction residual signal 24′, which is then quantized by a quantizer 32 also provided by the encoder 10. The quantized prediction residual signal 24″ is thus coded into the bitstream 14. For this purpose, the encoder 10 may optionally include an entropy coder 34 that 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 based on a prediction residual signal 24" decoded into and decodable from the data stream 14. To this end, the prediction stage 36 internally includes, as shown in FIG. 4, a dequantizer 38 that dequantizes the prediction residual signal 24" to obtain a spectral-domain prediction residual signal 24'" that corresponds to the signal 24' except for the quantization losses, followed by an inverse transformer 40 that subjects the latter prediction residual signal 24'" to an inverse transform, i.e., a spectral-to-spatial transform, to obtain a prediction residual signal 24"" that corresponds to the original prediction residual signal 24 except for the quantization losses. A combiner 42 of the prediction stage 36 then recombines, e.g., by addition, the prediction signal 26 and the prediction residual signal 24"" 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 predicted 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, decoder 20 may internally be composed of components corresponding to prediction stage 36, interconnected in a manner corresponding to prediction stage 36. In particular, entropy decoder 50 of decoder 20 entropy decodes quantized spectral-domain prediction residual signal 24'' from the data stream, with dequantizer 52, inverse transformer 54, combiner 56, and prediction module 58 interconnected and cooperating in the manner described above with respect to the modules of prediction stage 36, recovering a reconstructed signal based on prediction residual signal 24'', so that the output of combiner 56 results in a 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 can set some coding parameters, including, for example, prediction modes and motion parameters, according to some optimization scheme, such as, for example, in a manner that optimizes some rate- and distortion-related criterion, i.e., coding cost, and / or uses some rate control. As described in more detail below, the encoder 10 and decoder 20 and corresponding modules 44, 58 each support different prediction modes, such as intra-coding and inter-coding modes, that form a certain 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 decoder switch between their prediction synthesis may correspond to the subdivision of the pictures 12 and 12′, respectively, into blocks, some of which may be solely intra-coded blocks, some of which may be solely inter-coded blocks, and optionally, further blocks may be blocks obtained using both intra-coding and inter-coding, as will be described in more detail below. According to the intra-coding mode, a prediction signal for each block is obtained based on the spatially coded / decoded neighbors of the block. There may be several intra-coding sub-modes, the selection of which simulates a certain type of intra-prediction parameters. There may also be directional or angular intra-coding sub-modes, according to which the prediction signal for each block is filled by extrapolating neighboring sample values to the respective block according to a specific direction specific to each directional intra-coding sub-mode.The intra-coding sub-mode may also include one or more further sub-modes, such as 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 the two-dimensional linear function based on neighboring samples. In contrast, according to an inter-prediction mode, the prediction signal for a block may be obtained, for example, by temporally predicting the block interior. For parameterization of the inter-prediction mode, 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 entropy-coded transform coefficient levels representing the quantized spectral-domain prediction residual signal 24", the data stream 14 may also be encoded with prediction-related parameters for assigning block prediction modes, prediction parameters for the assigned prediction modes, such as motion parameters for inter-prediction modes, and, optionally, further parameters that control the synthesis of a 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 include parameters that control and signal the subdivision of each of the pictures 12 and 12' into blocks. The decoder 20 uses these 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] 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 by way of example only. The subdivision may be either 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, in which 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 a picture area into blocks 84, which may be referred to as transform blocks or transform coefficient blocks to distinguish them from coding blocks 80. In effect, FIG. 6 illustrates that the encoder 10 and decoder 20 may use two different subdivisions of each of the picture 12 and the picture 12' into blocks: one subdivision into coding blocks 80, and the other subdivision into blocks 84. While 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 either the boundary between two blocks 80 overlaps with the boundary between two blocks 84, or alternatively, either 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 one another, 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 concerned, similar remarks apply as those proposed with respect to the subdivision into blocks 80, i.e., the blocks 84 may be the result of a regular subdivision of the picture area into blocks arranged in rows and columns, a multi-tree subdivision of the picture area, or any other grouping of combinations or partitions thereof. It should be noted, in passing, that the blocks 80 and 84 are not limited to quadratic, rectangular, or any other shape. Furthermore, 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 need not be the only subdivisions 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 a granularity other than those subdivisions, the encoder and decoder may set specific 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 Figure 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 for skipping the transform for some of the transform blocks 84 so that the prediction residual signal is coded directly 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 Figures 7 to 12 below.
[0069] In the following, embodiments are described that can improve coding efficiency for transform type signaling and / or improve compression efficiency by allowing selection between multiple transform types. Most of the embodiments below illustrate features and functionality with respect to a decoder. However, it will be apparent 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 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 the transform coefficient block 104. Linear transformation (hereinafter, Underlying transformation (That is, The transform coefficients block 104 according to 131 defines the transformed representation. As used herein, a "lower-layer transform" refers to a linear transform applied to a transform coefficient block, or a transform at each stage in a multi-stage transform. A "primary transform indicator" is information identifying a candidate for a lower-layer transform, and a "secondary transform indicator" is interpreted depending on the value of the primary transform indicator. Examples of candidate sets for lower-layer transforms (primary transforms) are shown in Figures 11a and 11b.
[0071] 7 is configured to decode coefficient position information 100 from data stream 14. Coefficient position information 100 indicates a first-coded coefficient position 102 within a transform coefficient block 104. The first-coded coefficient position 102 may indicate the position of the 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 reverse / inverse scan order, the first-coded coefficient position 102 may indicate the position of the last non-zero transform coefficient according to the reverse / inverse scan order. A non-zero transform coefficient is defined herein as a transform coefficient having a value not equal to zero, and a zero transform coefficient is defined as 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 a 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 toward 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 a manner such 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 in the embodiment of FIG. 7, the transform coefficients 1181-1183 outside the predetermined subarea 106 are scanned by a first coefficient scanning 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 scanning 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 to 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 between 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 realizing 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 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 described 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 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 by inferring that the underlying transform 131 of the transform coefficient block 104 is a single transform if the first set of one or more available transforms 132 constitutes only one transform. Additionally, decoder 20 is configured to decode (109) values of transform coefficients of transform coefficient blocks 104 located from first coded coefficient position 102 toward last scanned position 101 according to a first coefficient scanning order 110, and to infer that transform coefficients 112 of transform coefficient blocks 104 located upstream of first coded coefficient position 102 according to first coefficient scanning order 110 are zero. As shown in Figure 8, decoder 20 may be configured to infer that all transform coefficients 112 within a shaded area of transform coefficient block 104 are zero.
[0078] The features and / or functionality described with respect to FIG. 8 are optional for the decoder 20 of FIG.
[0079] According to an embodiment, the decoder 20 shown in Figure 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 Figure 9. The decoder 20 may use a predetermined 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 predetermined probability model 232 depending on where the originally coded coefficient position 102 is located within the transform coefficient block 104, see Figures 9 and 10 for a description thereof.
[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, such as the embodiment shown in FIG. 9 , when determining (234) the predetermined probability model 232 depending on where the first-coded coefficient position 102 is located within the transform coefficient block 104, the decoder 20 is configured 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 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 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 8 transform coefficients, and the least likely transform coefficient that 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 is indicated by reference numeral 240. However, it will be apparent 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 of 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 up to which 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 up to which both scans are identical upstream of the last scanned position 101. The predetermined number 240 of transform coefficients may be set to a number within a range of three transform coefficients, up to the maximum number of transform coefficients up to which 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 shows, 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 the first coded transform coefficient position 102 of the transform coefficient block 104 is equal to the transform coefficient of 8. In addition, on the right, Figure 10 shows a transform coefficient block 104 having a first coded transform coefficient position 102 equal to the last scanned position 101 described above.
[0085] 11a and 11b, the set of available transforms 130 shown and described with respect to FIG. 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 of FIG. 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 a processed coefficient block 84′, and the secondary transform is applied only to the predetermined sub-area 106 of the processed coefficient block 84′ to determine a transform coefficient block 104. For example, in the inverse transform performed by the decoder, the inverse of the secondary transform 136b is applied to a predetermined 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 entire processed coefficient block 84' to determine the sample block 84. Alternatively, as shown in the upper left of Figure 11a, it is possible to apply the primary and secondary transforms in one transform step, where only the secondary transform 136b is applied within the predetermined sub-area 106 and the primary transform 136a is applied within and outside the predetermined 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. Figure 11a shows the first set of one or more available transforms 132 that is comprised of one first primary dedicated transform T0, and Figure 11b shows the first set of one or more available transforms 132 that is comprised of N1 first primary dedicated transforms T1 to T2. N111a shows a first set 132 of one or more available transforms, consisting of T1...T N1 and one or more second primary-only transformations in FIG. 11b are designated T N1+1 …T N2 and are 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 of the multi-stage transforms 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. 11 b, 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 whether the underlying transform 131 of the transform coefficient block 104 is a primary-only transform, i.e., a transform in set 138. Additionally, the decoder decodes a primary transform indicator 126 from the data stream, which identifies a primary-only transform from the set of primary-only transforms 138, i.e., one of the sets 138, in cases where the secondary transform indicator 124 indicates that the underlying transform 131 of the transform coefficient block 104 is a primary-only transform, or identifies a primary transform 136a of the multi-stage transform in cases 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 a set 136, and 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 of primary-only transforms 138, 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 Figure 11b, the decoder is configured to decode a primary transformation indicator 126 from the data stream. The primary transformation indicator 126 is a decoded 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 transformation from a set of primary-only transformations 138, which includes a second set of transformations 134, each of which includes a first primary-only transformation T1...T2. 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-only 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 one case, the underlying transform 131 of the transform coefficient block 104 is one or more first primary dedicated transforms T1...T, among which some transforms can be equivalent to each other. 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, or in the case where the first transform is a primary-only transform of one or more second primary-only transforms T N1+1 …T N2 In the case where the first transformation is one of the first primary dedicated transformations T1...T, one second primary dedicated transformation is indicated by the primary transformation indicator 126. Thus, the first transformation may be one or more first primary dedicated transformations T1...T N1 In one case, the secondary transform indicator 124 indicates the underlying transform 131 of the transform coefficient block 104, and the first transform is one or more secondary 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 Figure 11b, the decoder is configured to decode a primary transformation indicator 126 from the data stream. The primary transformation indicator 126 is a decoded representation of one or more first primary dedicated transformations T1...T N1 and one or more second primary-only transformations T N1+1 …T N2 , where the first transform is one or more primary transforms T1 of the 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, where the secondary transform indicator 124 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, setting 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 more 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 the 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 more 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 context-adaptive entropy decoding of the primary transform indicator 126 from the data stream may include features and / or functionality as described for setting the predetermined probability model 232 for context-adaptive entropy decoding 230 of the transform information 108 from the data stream 14, as shown in Figure 9. The first probability model, the second probability model, and the optional third probability model for the context-adaptive entropy decoding of the primary transform 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 transform information 108.
[0098] According to an embodiment, the primary transformation is equal for all of the one or more multi-stage transformations 136, and one or more first primary-only transformations T0 or T1 through 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 transform, 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 the 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 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, and to infer to be zero the transform coefficients 112 of the transform coefficient block 104 located upstream of the first coded coefficient position 102 according to the predetermined coefficient scanning order 110. As shown in Figure 12, the transform coefficients 112 within the 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 a transform coefficient block 104 located from the first coded coefficient position 102 toward the last scanned position 101 according to a predetermined coefficient scanning order 110, i.e., 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, for example, in the embodiment described later, in a manner in which coefficients are individually checked for their zero likelihood based on a 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 x m sub-block in the upper left corner of the block 104, which includes some sub-blocks with the lowest components, e.g., the sub-block that encompassed the last scanned position 101 together with the DC sub-block containing the DC coefficient. n may be equal to m, for example, n may be 4, and m may be 4. More precisely, the transform coefficient block may be subdivided into subblocks, each subblock being, for example, 4x4 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, 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 scanning order 110 may traverse the coefficients of the block 104 in a subblock-wise 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 subblock with the lowest spectral component that encompassed the last scanned position 101, a subblock flag may be transmitted in the data stream (i.e., decoded by a decoder or coded by an encoder), indicating whether any significant coefficients are contained within the respective subblock. Based on the subblock flags, the decoder may check whether significant values exist within any subblocks outside the predetermined area, i.e., any subblock between the n×n lowest spectral component and the subblock containing the last coded coefficient. This measurement tests whether all transform coefficients 118 of the transform coefficient block 104 that are located from the first coded coefficient position 102 toward 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 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 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 a first set of one or more available transforms 132 by removing from the set of available transforms 130 a second set of one or more available transforms 134, and determines a lower-level 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, for example, the top-left 16x16 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, for example, only the transforms of the first set of one or more available transforms 132, can be used. If the set 132 contains only one transform, for example, only DCT-II, the value of mts_idx may be inferred to be 0.
[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 provided in a first set 132 of one or more available transforms, e.g., as shown in Fig. 11a or 11b.N1 , and one or more second primary-only transformations T , e.g., provided in a second set 134 of one or more available transformations. N1+1 …T N2 Preferably, the set of available transforms 130 may include a first primary dedicated transform T0 and one or more second primary dedicated transforms T1...T2, as shown in Fig. 11a, for example. N 12, in which all the transform coefficients 118 of the transform coefficient block 104 outside the predetermined sub-area 106 of the transform coefficient block 104 are non-zero, the decoder may determine one first primary-only transform T0 as the underlying transform 131 of the transform coefficient block 104. In the other case, in which all the 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 the x in FIG. 12, the decoder may determine the underlying transform 131 of the transform coefficient block 104 from the set 130 by the 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 predetermined area subblock scheme. Additionally, 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 as outlined above with the secondary transform. For example, it may be that if the position of the last coded transform coefficient satisfies a certain condition, a further index selects a secondary transform from a set of secondary transforms. This set may optionally include a non-secondary transform, i.e., a distinguished transform that effectively departs from the primary transform as a primary-only transform. If the certain condition is not met, the secondary transform is also not used.
[0108] The transform 131 below the transform coefficient block 104 according to the transform coefficient block 104 defines the transformed representation, and the predetermined coefficient scanning order 110 scans the transform coefficients 120 in such a way 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 scanning 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, 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 must be non-zero.
[0110] According to an embodiment, the decoder 20 is configured to perform decoding 153 of the transform 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 transform 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 transform information 108 from the data stream, as shown in Figure 9. However, it will be apparent that the first, second and optional third probability models for the context adaptive entropy decoding of the transform information 154 may differ from the first, second and optional third probability models for the context adaptive entropy decoding of the transform information 108.
[0111] According to an embodiment, the set of available transformations 130 is a set of primary transformations T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T2 (p) ~T N2 (p) and the secondary transformation T1 (s) ~T N2 (s) and the linear transformation T1 outside the predetermined sub-area 106 corresponds to the concatenation of (p) ~T N2 (p) The multi-stage transforms 136 are included in a second set 134 of one or more available transforms. A set 138 of primary-only transforms is then formed from the first set 132 of one or more available transforms and includes a 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 to 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 any one of one or more multi-stage transforms 136, or 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 transform 131 underlying 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 transform 131 underlying the transform coefficient block 104 is directly indicated by the secondary transform indicator 156. Additionally, in this first case 157, it is checked whether the secondary transform indicator 156 indicates that the transform 131 underlying the transform coefficient block 104 is the primary-only transform 138, and if the secondary transform indicator 156 indicates that the transform 131 underlying 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 non-zero if they are not located within a predetermined sub-area 106 of the transform coefficient block 104, then the underlying transform 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 Figure 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 the first coded coefficient position 102 to 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 primary transform indicator 160 being indicative of a first primary dedicated transform T0 and one or more second primary dedicated transforms T1 to 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 second primary dedicated transforms T1-T N1 , the underlying transform 131 of the transform coefficient block 104 is a 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 linear transformation T1 (p) ~T N2 (p) is equal to 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., T0 in FIG. 11a, or 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 to correct a prediction signal obtained by intra-picture prediction or inter-picture prediction.
[0118] According to an embodiment, an encoder having features and / or functionality parallel 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 a transform 131 underlying a transform coefficient block 104 to obtain a transform coefficient block 104.
[0119] According to an embodiment, an encoder having features and / or functionality parallel 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 within 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 predetermined sub-area 106 (e.g., outside a 16x16 area for the non-DCT-II transforms 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 instead is 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 predetermined subarea 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 predetermined subarea 106, only the subset of allowed transforms that do not have a non-zero requirement may be signaled, e.g., transforms in the first set 132 of available transforms in the set 130 of available transforms. In cases where the subset includes 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 Figure 13 (see the condition on AllLumaCoeffOutside16x16AreZero).
[0124] In cases where an additional transform, e.g., LFNST, can be applied, the selection is signaled (156) before the transform type, indicating that the additional transform is applied; only the subset of transforms allowed to be combined with the additional transform may be signaled. In cases where the subset includes 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 DCT-II, as illustrated in both simplified syntax diagrams of FIG. 13).
[0125] In cases 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, which signals 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 lies within an area where all coefficients are required to be equal to 0 for a particular subset of allowed transforms, i.e., after the first (last) significant coefficient position 102 lies outside a predetermined subarea 106 (e.g., outside a 16x16 area for the non-DCT-II transforms 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 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 for LastCoeffPosY within 16x16).
[0127] FIG. 14 shows a simplified inter-plot 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 predetermined 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 predetermined sub-area 106, are in the scanning path 114, as shown on the left side of Figure 3 and as 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 cases where an additional transform, e.g., an LFNST, can be applied, its selection 124 is signaled after the transform type, where the transform type 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 Figure 14).
[0130] In addition to the previous case, signaling of the transform type is performed using context-adaptive entropy coding 230, for example, context-adaptive binary arithmetic coding (CABAC), as shown in Figure 9. In this case, the context selection depends on the condition of whether to allow applying an additional transform (e.g., LFNST). This may be the number 240 non-zero coefficients in the current block, i.e., 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 when 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 indicates 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 non-zero coefficients in scan order (left), or an 8x8 block with only one non-zero coefficient at the DC position (right).
[0134] In cases where an additional transform (e.g., LFNST) can be applied, its selection is signaled before the transform type, which indicates that the additional transform is applied, and only a subset of the transforms allowed to be combined with the additional transform may be signaled. In cases 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 DCT-II, as illustrated in the simplified syntax diagram on the right of Figure 14).
[0135] 3. Implementation Examples The linear transformation T shown in Figures 11a and 11b i and T i(p) teeth, DCT-II (or DCT-III), where DCT stands for Discrete Cosine Transform DST-IV, where 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) It may be a non-separable transform applied to the coefficients, and the decoder applies an inverse transform T to the transform coefficient block 104 to obtain the 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 (horizontal and vertical) 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 the coefficients need not be scanned 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 16x16 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] Furthermore, Figure 11a is merely exemplary. More than one primary-only transform may be included in the set 132. This is illustrated in Figure 11b. Primary transform T1 of the multi-stage transform (p) ~T N3 (p) may or may not have different numbers in set 136, one or more of which may belong to the primary dedicated transformations of set 132, although they may not be equal to each other.
[0140] Furthermore, as exemplarily shown in FIG. 11a, T1 (p) =…=T N2 (p) = T0, indicator 124 can be considered as indicating that a multi-stage transform is selected in cases where it does not indicate a primary dedicated transform, or as indicating that a secondary transform is selected in cases where it does not indicate a primary dedicated transform. Alternatively, indicator 124 may be interpreted as indicating whether a secondary transform is still available.
[0141] While some aspects have been described in the context of an apparatus, it is apparent that these aspects also represent descriptions of corresponding methods, where 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 descriptions 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 coded 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, embodiments of the invention may be implemented in hardware or software. Implementations may also be implemented using, for example, a digital storage medium, such as a floppy disk, DVD, Blu-ray, CD, ROM, PROM, EPROM, EEPROM, or flash memory, having electronically readable control signals stored thereon that cooperate (or are capable of cooperating) with a programmable computer system to perform the respective methods. 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, which 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 digital storage medium or 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 transmitted 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, or the like. 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 devices described herein, or components of the devices 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. 1. An apparatus for decoding a picture or video, comprising: decoding, from the data stream, coefficient position information indicating coefficient positions of non-zero coefficients within a transform block; determining, based on the coefficient positions of the non-zero coefficients within the transform block, that at least one non-zero coefficient is located outside a predetermined sub-area of the transform block; determining a probability model from among a plurality of probability models to be used for context-adaptive entropy decoding of the primary transformation indicator or transformation information based at least on the position of the last significant coefficient in the scan order and whether a distance metric for the scan from the last scanned position is less than or equal to a predetermined threshold; selecting or inferring a transform to apply to the transform block based on said determining; 1. An apparatus configured to perform operations comprising:
2. The apparatus of claim 1 , wherein the coefficient position of the non-zero coefficient comprises a position of a last significant coefficient in scan order within the transform block.
3. The apparatus of claim 1 , wherein the area of the transform block comprises a top-left 16×16 area of the transform block.
4. The selecting of the transformation may include:
2. The apparatus of claim 1, further comprising inferring a value of a multi-transform selection index (mts_idx) equal to 0, wherein the value of mts_idx is not signaled in the data stream, and the value of mts_idx indicates a transform to apply.
5. The apparatus of claim 1 , wherein the selected transform comprises a discrete cosine transform (DCT) II.
6. 1. An apparatus for encoding a picture or video, comprising: encoding coefficient position information into the data stream that indicates coefficient positions of non-zero coefficients within the transform block; determining, based on the coefficient positions of the non-zero coefficients within the transform block, that at least one non-zero coefficient is located outside a predetermined sub-area of the transform block; determining a probability model from among a plurality of probability models to be used for context-adaptive entropy decoding of the primary transformation indicator or transformation information based at least on the position of the last significant coefficient in the scan order and whether a distance metric for the scan from the last scanned position is less than or equal to a predetermined threshold; selecting or inferring a transform to apply to the transform block based on said determining; 1. An apparatus configured to perform operations comprising:
7. The apparatus of claim 6 , wherein the coefficient position of the non-zero coefficient comprises a position of a last significant coefficient in scan order within the transform block.
8. The apparatus of claim 6 , wherein the area of the transform block comprises a top-left 16×16 area of the transform block.
9. The apparatus of claim 6 , wherein the selected transform comprises a discrete cosine transform (DCT) II.
10. 1. A method for decoding a picture or video, comprising: decoding, from the data stream, coefficient position information indicating coefficient positions of non-zero coefficients within a transform block; determining, based on the coefficient positions of the non-zero coefficients within the transform block, that at least one non-zero coefficient is located outside a predetermined sub-area of the transform block; determining a probability model from among a plurality of probability models to be used for context-adaptive entropy decoding of the primary transformation indicator or transformation information based at least on the position of the last significant coefficient in the scan order and whether a distance metric for the scan from the last scanned position is less than or equal to a predetermined threshold; selecting or inferring a transform to apply to the transform block based on said determining; A method comprising:
11. The method of claim 10 , wherein the coefficient position of the non-zero coefficient comprises the position of the last significant coefficient in scan order within the transform block.
12. The method of claim 10 , wherein the area of the transform block comprises a top left 16×16 area of the transform block.
13. The selecting of the transformation may include:
11. The method of claim 10, comprising inferring a value of a multi-transform selection index (mts_idx) equal to 0, wherein the value of mts_idx is not signaled in the data stream, and the value of mts_idx indicates a transform to apply.
14. The method of claim 10 , wherein the selected transform comprises a discrete cosine transform (DCT) II.
15. A non-transitory storage medium having program code that, when executed by at least one processor, causes the at least one processor to perform the method of claim 10.
16. 1. A method for encoding a picture or video, comprising: encoding coefficient position information into the data stream that indicates coefficient positions of non-zero coefficients within the transform block; determining, based on the coefficient positions of the non-zero coefficients within the transform block, that at least one non-zero coefficient is located outside a predetermined sub-area of the transform block; determining a probability model from among a plurality of probability models to be used for context-adaptive entropy decoding of the primary transformation indicator or transformation information based at least on the position of the last significant coefficient in the scan order and whether a distance metric for the scan from the last scanned position is less than or equal to a predetermined threshold; selecting or inferring a transform to apply to the transform block based on said determining; A method comprising:
17. The method of claim 16 , wherein the coefficient position of the non-zero coefficient comprises a position of the last significant coefficient in scan order within the transform block.
18. The method of claim 16 , wherein the area of the transform block comprises a top left 16×16 area of the transform block.
19. The method of claim 16 , wherein the selected transform comprises a discrete cosine transform (DCT) II.
20. 17. A non-transitory storage medium having program code that, when executed by at least one processor, causes the at least one processor to perform the method of claim 16.
Citation Information
Patent Citations
Image decoding device, image decoding method, and program
WO2020262011A1
Transformation-based image coding method and device therefor
WO2021096174A1