Encoder, decoder, system, method for decoding, method for encoding, data stream and computer program using a code word for the position of a transform coefficient
By using a block size-dependent truncated exponential Golomb code and adaptive contexts, the method efficiently signals the last encoded transform coefficient position, reducing bit usage and improving decoding efficiency in general-purpose waveform coding.
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- FRAUNHOFER GESELLSCHAFT ZUR FORDERUNG DER ANGEWANDTEN FORSCHUNG EV
- Filing Date
- 2025-10-23
- Publication Date
- 2026-04-30
AI Technical Summary
Existing methods for signaling the last encoded transform coefficient position in general-purpose waveform coding, such as biophysical, geo-physical, or acoustic signals, require a large number of bits due to the use of escape values or explicit side information, which is inefficient, especially in high-performance hardware implementations.
Employing a block size-dependent truncated exponential Golomb code and adaptive contexts for entropy coding schemes to signal the last position of transform coefficients, allowing for implicit coding of subsequent coefficients and reducing the number of bits required.
This approach achieves improved coding efficiency by using fewer bits to represent the sequence of transform coefficients, particularly in lossy coding scenarios, optimizing computational workload and enhancing decoding performance.
Smart Images

Figure EP2025080584_30042026_PF_FP_ABST
Abstract
Description
[0001] Encoder, Decoder, System, Method for decoding, Method for encoding, Data Stream and Computer Program using a code word for the position of a transform coefficient
[0002] Description
[0003] Technical Field
[0004] Embodiments comprise decoders for decoding a one-dimensional digital waveform signal from a data stream by use of block-wise transform decoding, encoders for encoding a one-dimensional digital waveform signal into a data stream by use of block-wise transform encoding as well as corresponding decoding methods, encoding methods, system and computer programs.
[0005] Embodiments of the invention may also be titled as efficient signaling of last encoded transform coefficient position in general-purpose waveform coding.
[0006] Backoround of the invention
[0007] General-purpose lossy coding of digital waveform signals, such as biophysical (e. g., medical), geo-physical (e. g., seismic), or acoustic (e. g., audio) signals, often utilizes block-wise transform coding of time-domain prediction residuals to increase the compression efficiency. In such coding schemes, it is typically beneficial to be able to signal a block-wise last position (lastPos) parameter, indicating in frequency direction the index (or position) of the highest (or last) residual transform coefficient not quantized to zero. According to the state of the art, such lastPos parameters are coded using either escape values, or escape sequences, during entropy coding of said residual transform coefficients, or using explicit side information with, at least partially, a fixed number of bits, such as, e. g., 9 or 10 bits for a 512- or 1024-sample vector of quantized transform coefficients (truncated binary coding).
[0008] In some cases, either the implicit lastPos signaling via escape bit-sequences or the explicit signaling via truncated binary code-words may, for example, require a lot of bits because said escape sequences or binary code-words end up being very long. Moreover, when using context based entropy coding schemes with separate contexts for each, or at least most, coded bits, the number of contexts in use for one code-word may become quite large, which is problematic in high-performance implementations, in particular on some hardware devices. It is, therefore, desirable to devise an alternative to these two approaches, especially (and preferably) to the truncated binary code-book having long code-words.
[0009] An objective of the present inventive concept is to provide an improved concept for coding a onedimensional digital waveform signals, improved in terms of coding efficiency.
[0010] This is achieved by the subject matter of the independent claims of the present application.
[0011] Further embodiments according to the invention are defined by the subject matter of the dependent claims of the present application.
[0012] Summary the Invention
[0013] In the following, reference is made only to a decoder in accordance with embodiments of the invention. However, it is to be understood that any functions or functionalities described with respect to the decoder are, mutatis mutandis, likewise applicable to an encoder in accordance with embodiments. The same applies correspondingly to any advantageous features or effects described herein.
[0014] An embodiment of the invention describes a decoder for decoding a one-dimensional digital waveform signal from a data stream. The decoder is configured to use block wise transform decoding to obtain the one-dimensional digital waveform signal from the data stream. The decoder is configured to decode a sequence of transform coefficients of a predetermined block of the one dimensional waveform signal from the data stream by deriving a position information from the data stream and by locating, using the precision information, a position in the sequence of transform coefficients. The decoder is configured to derive the position information from the data stream by decoding from the data stream a code word, using a truncated exponential Golomb code, which depends on a block size of the predetermined block (e.g. the code word depends on the block size of the predetermined block), or a flag indicating whether a number of the first transform coefficients is one or greater than one and, if so, a code word using an exponential Golomb code (e.g., the truncating exponential Golomb code). The decoder is further configured to decode one or more first transform coefficients of the sequence of transform coefficients from the data stream, which precede the position in the sequence of transform coefficients, and attributing a predetermined value to one or more second transform coefficients of the sequence of transform coefficients, which follow the position in the sequence of transform coefficients.
[0015] In other words, embodiments address, e.g. inter alia, the prior-art shortcomings. In embodiments, one or more of the following two modification aspects may be implemented (hence embodiments may comprise respective functionalities or details):
[0016] 1. usage of a block size dependent truncated exponential Golomb code-book (e.g. that inks specific codewords to specific values) for signaling of lastPos in combination with single-bit prefix coding, for max. range coverage with power-of-2 block sizes,
[0017] 2. in case of context based entropy coding schemes, usage of adaptive contexts e.g. only for the single-bit prefix code and, optionally, the class indicator (pref ix code) of the exponential Golomb coding.
[0018] Each of these two aspects is discussed herein along with preferred embodiments. It is to be noted that both aspects may be used independently as well as in combination.
[0019] The inventors have recognized that, by employing a coding scheme according to the subjectmatter of the invention, an overall improvement in coding efficiency can be achieved. In particular, by deriving the sequence of transform coefficients on the basis of position information indicated by a codeword or by a flag in combination with a codeword, the sequence of transform coefficients can be represented using fewer bits compared to existing approaches. This results in an overall increase in coding efficiency, which is particularly advantageous in the context of lossy coding of digital waveform signals.
[0020] Within the framework of the present subject-matter, one or more second transform coefficients of the sequence of transform coefficients can be implicitly coded by means of the position information, or, more specifically, by the codeword itself. Through such implicit coding of the one or more second transform coefficients, additional efficiency gains are achieved.
[0021] In certain embodiments, a codeword indicating that the sequence of transform coefficients consists exclusively of first transform coefficients or exclusively of second transform coefficients can be coded with particular efficiency by means of the flag or, respectively, by means of using the truncated Golomb-code. The inventors have found that such cases where the flag is sufficient or a truncation is possible occur with high frequency, which in turn leads to an especially efficient coding of embodiments according to the present subject-matter. In this context, the use of an exponential Golomb code, and / or a truncated exponential Golomb code, further contributes to the improved coding efficiency of the proposed schemes. Exponential Golomb codes are well-suited for representing the position information due to their compact representation of small integer values, which frequently occur in practical coding scenarios. By optionally employing the truncated version of the exponential Golomb code, unnecessary overhead can be avoided by truncation of the exponential Golomb code, thereby enabling a more efficient mapping of the relevant information. Accordingly, the combination of the subject-matter of the invention with (truncated) exponential Golomb coding provides a flexible and bit-efficient approach that is particularly advantageous for coding the sequence of transform coefficients by coding the codeword.
[0022] An embodiment of the invention describes a decoder that supports different block sizes, each block size being associated with a corresponding number of transform coefficients in the sequence of transform coefficients. For example, the corresponding number of transform coefficients in the sequence of transform coefficients may be equal to the number of samples of the respective block size. The decoder may, for example, be configured to decode the block size from the data stream and derive the number of transform coefficients in the sequence of transform coefficients therefrom. The decoder may, for example, also be configured to have a default value for a specific block size and utilize the specific block size to derive therefrom the (e.g. total) number of transform coefficients in the sequence of transform coefficients.
[0023] An embodiment of the invention describes a decoder that is configured to utilize the truncated exponential Golomb code (e.g. or the exponential Golomb code) such that the truncated exponential Golomb code (e.g. or the exponential Golomb code) is composed of a prefix indicating a class value using a truncated unary code, followed by, if the class value exceeds 0, a suffix of a length equal to the class value. The inventors have found that the suffix can be omitted if the class value derived from the prefix is indicating a class value of 0, and therefore, additional bits can be saved and an improved coding efficiency can be achieved by embodiments of the invention.
[0024] An embodiment of the invention describes a decoder, wherein the truncated unary code (e.g., of the prefix) is composed of code words of x first binary values (e.g., the first binary value may be 1 or 0) followed by, if x is smaller than or equal X, a second binary value (e.g. precisely one second binary value; e.g., that may be equal to 0 or 1 ; e.g. wherein the second and first binary values are different from each other), wherein the decoder is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients. This embodiment of the invention allows, for example, that if the number of transform coefficients in the sequence of transform coefficients equals X, the second binary value is omitted. The number of transform coefficients in the sequence of transform coefficients may, for example, be derived from the block size of the predetermined block. This embodiment can, for example, allow for an unambiguous determination of the class value, wherein the class value, for example, equals x and the class value directly indicates the number of bits in the suffix (e.g., the length of the suffix). X may be described as a maximal possible length of a prefix for a given number of transform coefficients in the sequence of transform coefficients. For example, if there are at most 2 class values to be indicated by the prefix, X may be equal to 2.
[0025] In an embodiment, the second binary value is omitted if x equals X. This is possible due to the implicit indication of a maximal class value by the x first binary values. It may not be necessary to indicate an end of the prefix since a maximal length of the prefix is already achieved. This can further improve coding efficiency.
[0026] An embodiment of the invention describes a decoder that is configured to determine X based on a square root of the number of coefficients in the sequence of transform coefficients. For example, the decoder may be configured to determine X based on the following equation: log2(lseq) + k with k e Z and lseqbeing the number of coefficients in the sequence of transform coefficients (e.g. the length of the sequence). The inventors have found that determining X based on the square root or on the logarithm of the number of coefficients in the sequence of transform coefficients can depict an advantageous solution since unnecessary bits can be omitted and saved. For example, if a maximal number of coefficients is 16, then a maximal number of possible positions that need to be transmitted may be dependant from log2(16)+k= 4+k, wherein k may, for example, be equal to 1 or 0. In this example, the prefix may consist of maximal 4 bits of the first binary value to indicate a class value (e.g. a bit length of the prefix).
[0027] An embodiment of the invention describes a decoder that is configured to determine X based on Xmax, wherein xmax is a number of first binary values needed for any position information in a sequence of transform coefficients. An embodiment of the invention describes a decoder that is configured to determine a last-coefficient index by using the class value and a value derived from the suffix, wherein the one or more first transform coefficients encompass all transform coefficients of the sequence of transform coefficients having a coefficient index smaller than or equal to the last coefficient index. It has been found that by coding the last coefficient index, a cut off position in between the one or more first transform coefficients and the optional one or more second transform coefficients can be coded in an efficient manner since only an index number has to be coded and therefore depicts an advantageous embodiment having an improved coding efficiency.
[0028] An embodiment of the invention describes a decoder, wherein the sequence of transform coefficients represents a DCT, DST, or FFT (e.g., a discrete cosine transformation, a discrete sine transformation or a Fast Fourier transformation) of the predetermined block. The inventors have found that using any of the disclosed transformation matters for the predetermined block represents an advantageous implementation that can lead to an improved reconstruction of the predetermined block by the decoder according to the embodiments. The decoder may, for example, be configured to apply a reverse transformation onto the sequence of transform coefficients to obtain the predetermined block.
[0029] In an embodiment, the sequence of transform coefficients may, for example, contain a DC transform coefficient (e.g. at a first position in the sequence of transform coefficients). This may, for example, be the first coefficient of the discrete cosine transformation applied on the predetermined block.
[0030] In an embodiment, the decoder is configured to decode the first transform coefficient sequentially, either starting from the DC transform coefficient to the coefficient index n, wherein n is a largest coefficient index of any coefficient indexes of the first transform coefficients of the sequence of transform coefficients, or starting from the coefficient index n to the DC transform coefficient. The inventors have found that by associated the transform coefficients in the sequence of transform coefficients with an order, for example, an ascendingly or descendently a computational workload of the decoder can be optimized and no further processing may be required.
[0031] An embodiment of the invention describes a decoder, wherein the exponential Golomb code equals the truncated exponential Golomb code. Features and functionalities as well as considerations described with respect to the truncated exponential Golomb code are also applicable to the exponential Golomb code.
[0032] An embodiment of the invention describes a decoder, wherein the truncated unary code is composed of codewords of x first binary values (e.g., equal to 1) followed by, if x is smaller than or equal to X, a second binary value (e.g., a value of 0), wherein the decoder is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients. The inventors have found that codewords according to this embodiment of the invention can save an additional bit by omitting the suffix of the codeword for the largest x of first binary values. For example, the second binary value can be omitted, and therefore also the suffix of the codeword, if the codeword indicates a biggest possible x.
[0033] All considerations and remarks done with respect to decoders according to the embodiments are also be applicable to corresponding encoders according to embodiments and to corresponding methods according to embodiments.
[0034] Brief Description of the Drawings
[0035] The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the following description, various embodiments of the invention are described with reference to the following drawings, in which:
[0036] Fig. 1 shows a schematic view of a decoder according to embodiments;
[0037] Fig. 2 shows a detailed schematic view of a decoder according to embodiments;
[0038] Fig. 3 shows a schematic view of an encoder according to embodiments;
[0039] Fig. 4 shows a detailed schematic view of an encoder according to embodiments;
[0040] Fig. 5 shows an exemplary view of a coding scheme utilized by embodiments of the invention;
[0041] Fig. 6 shows an exemplary view of a coding scheme utilized by embodiments of the invention;
[0042] Fig. 7 shows a schematic view of an exemplary framework of embodiments of the invention;
[0043] Fig. 8 shows a schematic view of method for decoding from a data stream; and
[0044] Fig. 9 shows a schematic view of method for encoding into a data stream. Detailed Description of the Embodiments
[0045] Further embodiments will be defined by the enclosed claims.
[0046] It should be noted that any embodiments as defined by the claims can be supplemented by any of the details (features and functionalities) described in the above mentioned chapters.
[0047] Also, the embodiments described in the above mentioned chapters can be used individually, and can also be supplemented by any of the features in another chapter, or by any feature included in the claims.
[0048] Also, it should be noted that individual aspects described herein can be used individually or in combination. Thus, details can be added to each of said individual aspects without adding details to another one of said aspects.
[0049] Moreover, features and functionalities disclosed herein relating to a method can also be used in an apparatus (configured to perform such functionality). Furthermore, any features and functionalities disclosed herein with respect to an apparatus can also be used in a corresponding method. In other words, the methods disclosed herein can be supplemented by any of the features and functionalities described with respect to the apparatuses.
[0050] Also, any of the features and functionalities described herein can be implemented in hardware or in software, or using a combination of hardware and software, as will be described in the section “implementation alternatives”.
[0051] The following may be titled: Efficient Signaling of Last Encoded Transform Coefficient Position in General-Purpose Waveform Coding
[0052] The following may hence address in particular features, functionalities and details regarding embodiments for Efficient Signaling of Last Encoded Transform Coefficient Position in General-Purpose Waveform Coding.
[0053] Equal or equivalent elements or elements with equal or equivalent functionality are denoted in the following description by equal or equivalent reference numerals even if occurring in different figures. In the following description, a plurality of details is set forth to provide a more throughout 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 block diagram form rather than in detail in order to avoid obscuring embodiments of the present invention. In addition, features of the different embodiments described herein after may be combined with each other, unless specifically noted otherwise. Functionalities described with respect to an exponential Golomb code are also applicable to a truncated exponential Golomb code and vice versa.
[0054] Fig. 1 shows a schematic view of a decoder 12 according to embodiments of the invention. The decoder 12 is configured to decode, from a data stream 16, a one-dimensional digital waveform signal 102. The decoder 12 is configured to block-wise decode the one-dimensional digital waveform signal 102, in other words, by use of block-wise transform decoding, from the data stream 16.
[0055] For decoding a predetermined block 101 of the one-dimensional digital waveform signal 102, the decoder 12 is configured to derive, from the data stream 16, using a position information deriver 159, an optional flag 109 and a codeword 107. The codeword can, for example, be a codeword using a truncated exponential Golomb code which depends on a block size of the predetermined block 101 , or may be a codeword using an exponential Golomb code. If the codeword 107 is an exponential Golomb code, the flag 109 may be derived from the data stream 16, the flag indicating whether a number of the first transform coefficients is one or greater than one. The position information deriver 159 may is further configured to derive a position information 108 using the afore-mentioned information items.
[0056] The decoder 12 further comprises a sequence obtainer 158 that is configured to utilize the position information 108 to locate a position 104 in a sequence of transform coefficients 103 and to obtain the sequence 103. The sequence obtainer 158 is further configured to decode one or more first transform coefficients of the sequence of transform coefficients 103 from the data stream 16. For such purposes, the sequence obtainer 158 utilizes the position information 108 that indicates the position 104 in the sequence of transform coefficients 103. The position 104 may be the position up until which point the one or more first transform coefficients 104 shall be decoded from the data stream 16. The sequence obtainer 158 is further configured to attribute a predetermined value (e.g., 0) to one or more second transform coefficients 106 of the sequence of transform coefficients 103 so as to obtain the full sequence of transform coefficients 103. The one or more second transform coefficients 106 may immediately follow the position 104 in the sequence of transform coefficients 103.
[0057] The decoder 12 is configured to apply the present inventive concept block-wise to obtain, for each block of the one-dimensional digital waveform signal 102 coded in the data stream 16, a respective sequence of transform coefficients 103.
[0058] Fig. 2 shows a detailed schematic view of a decoder 12. Features and functionalities of the decoder 12 may be taken individually or in combination and be implemented in the decoder 12 of Fig. 1. In the following description of the decoder 12, redundant explanations of the units of the decoder 12 that are also available or have already been described with respect to the decoder 12 of Fig. 1 are omitted.
[0059] The position deriver 159 is configured to decode the flag 109 from the data stream 16, the flag 109 can, for example, be a single bit, wherein a first value that indicates that the number of the first transform coefficients is 0 or, for example, be a value of 1 that indicates that the number of first transform coefficients of the sequence of transform coefficients 103 is one or greater than one (e.g. or the other way round). Furthermore, the position information deriver 159 can be configured to decode the codeword 107 from the data stream 16 such that the codeword 107 immediately follows the flag 109 in the data stream 16. If the flag 109 indicates that the number of the first transform coefficients is 0, no codeword 107 may be present and therefore may not be decoded and expected by the position deriver 159 in the data stream 16.
[0060] The sequence obtainer 158 may, for example, be configured to decode the first transform coefficients 105 from the data stream 16 from a coded representation of the first transform coefficients 105’. The coded representation of the first transform coefficients 105’ may, for example, immediately follow the codeword 107 or, for example, immediately follow the flag 109 or, for example, immediately precedes the flag 109 or the codeword 107 or may, for example, be derived from the data stream 16 somewhere else.
[0061] The sequence obtainer 158 can, for example, be configured to utilize fixed bypass probabilities for decoding the codeword 107.
[0062] The position information deriver 159 can, for example, be configured to use a context-adaptive binary arithmetic decoding scheme for decoding the codeword 107. The position information deriver 159 can, for example, be configured to use a context-adaptive binary arithmetic decoding scheme for decoding the flag 109. The position information deriver 159 can, for example, be configured to use fixed bypass probabilities for a suffix of the codeword and use signal-adaptive probabilities for a prefix of the codeword 107. The position information deriver 159 can, for example, be configured to use a context-adaptive binary arithmetic decoding scheme for decoding the codeword 107, wherein the codeword may be comprised of a prefix and a suffix, wherein the position information deriver 159 can, for example, be configured to use fixed bypass probabilities for the suffix and use signal-adaptive probabilities for the prefix.
[0063] The sequence obtainer 158 can, for example, be configured to fill up or attribute a predefined value that, for example, equals 0 to the second transform coefficients 106. The second transform coefficients 106 may, for example, therefore, not be directly decoded from the data stream 16 and the sequence of transform coefficients 103 can be obtained by embodiments by only decoding the first transform coefficients 105 from the data stream. A split in between the first transform coefficients 105 and the second transform coefficients 106 can, for example, be indicated to the sequence obtainer 158 by the position information deriver 159 through the position information 108.
[0064] The obtained sequence of transform coefficients 103 can, for example, be further utilized by a reverse transformation unit 157 that is configured to apply a reverse transformation, for example, a discrete cosine transformation, an inverse transformation, a discrete sine transformation, or a Fast Fourier transformation, using the sequence of transform coefficients 103 as its coefficients. The reverse transformation may, for example, be described as a transformation from a frequency domain to a spatial or time domain. The transformation of the reverse transformation unit 157 may yield the predetermined block 101 of the one-dimensional digital waveform signal 102.
[0065] In embodiments of the invention, additional post- and pre-processing units may be applied to the predetermined block 101, either in the frequency domain or in the spatial or time domain. The post-processing units may, for example, be configured to enhance a quality of the one-dimensional digital waveform signal.
[0066] The position information deriver 159 may be configured to employ the coding scheme of Fig. 5 or of Fig. 6 or a combination thereof. The description now proceeds with a description of encoders according to embodiments. It is to be understood that any functions or functionalities described with respect to the decoder 10 of Fig.
[0067] 1 or Fig. 2 are, mutatis mutandis, likewise applicable to an encoder 10 of the Fig. 3 and 4.
[0068] In embodiments of the invention, coding of the first transform coefficients may be performed sequentially. The coding may be carried out in an order starting from a DC transform coefficient and proceeding to a coefficient index N, wherein / V represents the largest coefficient index among the indices of the first transform coefficients of the sequence of transform coefficients. Alternatively, in other embodiments, the coding may be performed in the reverse order, i.e., starting from the coefficient index A / and proceeding toward the DC transform coefficient.
[0069] According to further embodiments, the coding order may be selectively chosen between the two alternatives, depending on implementation aspects, coding efficiency considerations, or signaling requirements.
[0070] In exemplary embodiments, the decoder 12 may be configured to employ a context-adaptive binary arithmetic decoding scheme for decoding one or more syntax elements, such as (e.g. only) the flag 109 or (e.g. only) the codeword 107.
[0071] In an embodiment, the decoder 12 may be configured to only use a context-adaptive binary arithmetic decoding scheme for decoding the flag 109, whereas other parts of the position information are coded differently.
[0072] For decoding the data stream 16, the decoder 12 is configured to obtain a sequence of transform coefficients 103 that are used by a transformation unit of the decoder 12 to transform a signal from a frequency domain into a sample or time domain. The transform coefficients 103 may be ordered such that decoding starts from a DC coefficient and continues toward higher frequency coefficients, wherein coefficients beyond a position 104 may assume a value of zero. Accordingly, the decoder 12 may be configured to decode from the data stream 16 only a subset of transform coefficients, referred to as first transform coefficients 105, together with position information 108 indicating the position 104 that separates non-zero coefficients from coefficients that are assumed to be zero. In this way, the decoder 12 can efficiently reconstruct the sequence of transform coefficients 103 without having to explicitly decode coefficients that are known to be zero, thereby reducing the number of bits required for representation. The obtained transform coefficients 103 may then be provided to a reverse transformation unit 157 that performs a corresponding inverse transform, such as an inverse discrete cosine transform, inverse discrete sine transform, or inverse fast Fourier transform, thereby reconstructing a predetermined block 101 of a one-dimensional digital waveform signal 102 in the sample domain.
[0073] In some embodiments, post-processing units may be applied to the reconstructed block 101 to enhance the quality of the decoded signal, for example by performing noise shaping, smoothing, or adaptive filtering operations.
[0074] Fig. 3 shows a schematic view of an encoder 10 according to embodiments. The encoder 10 is configured to block-wise encode a one-dimensional digital waveform signal 102 into a data stream 16 by use of block-wise transform encoding. For encoding a respective predetermined block 101 of the one-dimensional digital waveform signal 102, the encoder 10 comprises a position locator 369 for locating a position 104 in the sequence of transform coefficients 103, for a predetermined block 101, that describes a cut in between first transform coefficients 105 and second transform coefficients 106 in the sequence of transform coefficients 103, wherein the second transform coefficients that follow the position 104 are to be inferred to be equal to a predetermined value by a decoder (e.g. 12). The position locater 369 may derive a position information 108 describing the position 108 that is further encoded in the data stream 16 by a position encoder 365.
[0075] For encoding the position information 108 into the data stream 16, the position encoder 365 may, for example, be configured to use a coding scheme as depicted in Fig. 5 or Fig. 6.
[0076] The encoder 10 further comprises a first transform coefficients encoder 367 that is configured to encode the first transform coefficients 105, which precede the position 104 in the sequence of transform coefficients 103, into the data stream 16.
[0077] Fig. 4 shows a detailed schematic view of an encoder 10. Features and functionalities of the encoder 10 may be taken individually or in combination and be implemented in the encoder 10 of Fig. 3. In the following description of the encoder 10, redundant explanations of the units of the encoder 10 that are also available or have already been described with respect to the encoder 10 of Fig. 3 are omitted. Fig. 4 shows a detailed schematic view of an encoder 10 according to embodiments of the invention. The encoder 10 comprises a transformation unit 463 for transforming a predetermined block 101 from a time or spatial domain to a frequency domain. The transformation unit 463 may be configured to transform the predetermined block 101 to obtain the sequence of transform coefficients 103.
[0078] The position encoder 365 may be configured to encode the position information 108 by use of a codeword 107 and / or a flag 109. The flag 109 and codeword 107 may immediately precede a coded representation of the first transform coefficients 105’ that is coded into the data stream 16 by the first transform coefficients encoder 367.
[0079] The position encoder 365 can, for example, be configured to utilize fixed bypass probabilities for encoding the codeword 107 and / or the flag 109. The position encoder 365 can, for example, be configured to use a context-adaptive binary arithmetic encoding scheme for encoding the codeword 107. The position encoder 365 can, for example, be configured to use a context-adaptive binary arithmetic encoding scheme for encoding the flag 109. The position encoder 365 can, for example, be configured to use fixed bypass probabilities for a suffix of the codeword 107 and use signal-adaptive probabilities for a prefix of the codeword 107. The position encoder 365 can, for example, be configured to use a context-adaptive binary arithmetic encoding scheme for encoding the codeword 107, wherein the codeword may be comprised of a prefix and a suffix, wherein the position encoder 365 can, for example, be configured to use fixed bypass probabilities for the suffix and use signal-adaptive probabilities for the prefix.
[0080] For encoding the position information 108 into the data stream 16, the position encoder 365 may, for example, be configured to use a coding scheme as depicted in Fig. 5 or Fig. 6.
[0081] The description proceeds with a description of exemplary coding schemes that may be utilized by embodiments of the invention. In particular, the described coding schemes 591 and 691 may be utilized by a position encoder 365 to encode the position information 108 into a data stream 16 and / or may be utilized by a position information deriver 159 to decode a position information 108 from the data stream 16.
[0082] Fig. 5 shows an exemplary view of a coding scheme 91 as utilized by embodiments of the invention. The coding scheme 591 shows bit patterns of code words (e.g. code-words) as proposed by embodiments of the invention. The coding scheme 591 links values 593 to bit patterns. The value 593 may be the position information 108 indicating the position 104 separating first and second transform coefficients in the sequence of transform coefficients 103.
[0083] In the displayed coding scheme 591, a flag 109 is used to indicate, if the value 593 is 0, as, for example, can be seen in the first row. If the bit pattern starts with the flag 109 being 0 a value of 0 may be indicated. In an embodiment, this case refers to the position 104 being 0, meaning, no first transform coefficients 105 may be coded by embodiments of the invention. Alternatively, in an embodiment, this case refers to the position 104 being 0 from the back of the sequence of transform coefficients 103, meaning no second transform coefficients 106 shall be coded by embodiments.
[0084] The coding scheme 591 further shows an exponential Golomb code being used to code a codeword 107, if the flag 109 is indicating a value larger than zero. The codeword 107 may comprise of a prefix 551 and a suffix 552, wherein the prefix 551 indicates a class value that, inter alia, indicates a presence and / or a length of the suffix 552.
[0085] The prefix 551 may consist of x times a first binary value, e.g. as exemplary depicted 1 , that depicts a bit length of the suffix 552, followed by a second binary value indicating an end of the prefix 551.
[0086] The prefix 551 may also only comprise one bit having the second binary value. This case may be used to indicate a value 593 of 1 . Since suffix 552 is not needed it may be omitted.
[0087] For example, in case of value (593) 6, the flag 109 indicates a value 593 unequal to zero and the suffix 551 indicates a class value of 2. The class value relates to a bit length of the suffix, which in this case may also be equal to 2. The suffix 552 than may indicate by a binary coding a decimal suffix value of 2. The value 593 may than be calculated by embodiments of the invention by adding 1 for the flag 109 indicating a value larger than zero, adding 2 to the power of the class value (e.g.
[0088] 2n-1 , with n being the class value) and adding the decimal value of the suffix. For six this may be equal to 1 +22-1 +2=6.
[0089] In other words, the value 593 may be calculated according to v = 2" + d with v being the value 593, n being the class value as derived by the number of first binary values in the prefix 551 and d being a decimal value of the suffix 552. Fig. 6 shows an exemplary view of a coding scheme 691 utilized by embodiments of the invention. The coding scheme 691 links values 593 to bit patterns. The value 593 may be the position information 108 indicating the position 104 separating first and second transform coefficients in the sequence of transform coefficients 103.
[0090] In the displayed coding scheme 591, a flag 109 is used to indicate, if the value 593 is 0, as, for example, can be seen in the first row. For example, if the bit pattern starts with the flag 109 being 0 a value of 0 may be indicated. In an embodiment, this case refers to the position 104 being 0, meaning, no first transform coefficients 105 may be coded by embodiments of the invention. Alternatively, in an embodiment, this case refers to the position 104 being 0 from the back of the sequence of transform coefficients 103, meaning no second transform coefficients 106 shall be coded by embodiments.
[0091] In the displayed coding scheme 691 , the Golomb code used to code a codeword 107 indicating a position 104 separating first and second transform coefficients in the sequence of transform coefficients 103 may be truncated. For example, in the displayed coding scheme 691 a maximal length of the sequence of transform coefficients 103 is 8, which allows embodiments of the invention to omit the second binary value in the prefix 551 of the codeword 107 and the suffix 551 when coding a highest value, such as depicted with the value 8 in this embodiment.
[0092] Since a bit pattern ‘111 T may not be able to indicate any other value besides 8 when a maximal value is 8, a bit having the second binary value as well as the suffix 551 can be omitted and further bits can be saved.
[0093] Embodiments may be configured to (enZde)code the flag 109 and the truncated exponential Golomb code as depicted in Fig. 6 for the position information.
[0094] The description proceeds with a description of a first preferred Embodiment
[0095] Let N be the block size, i.e., total number of quantized residual transform coefficients in some block (e.g. number of transform coefficients in the sequence of transform coefficients 103 for a predetermined block 101), and 0 < lastPos < N (e.g. lastPos may be the position 104 in the sequence of transform coefficients 103) be the index of the highest-frequency transform coefficient not quantized to 0. Signaling lastPos from the encoder (sender) (e.g. 10) to the decoder (receiver) (e.g. 12) side increases the efficiency of the coder especially when lastPos « N and may, according to embodiments, preferably done by incorporating exponential Golomb coding (e.g. for coding the codeword 107). Exponential Golomb codes may begin with a unary coded prefix (e.g.
[0096] 551) (preferably, zero or more 1s followed by one terminating 0) serving as a class indicator (e.g. as an indicator for a class value). The bit count before the terminating prefix bit (preferably, a 0 bit, as noted) (e.g. first bit having the second binary value different to the first binary value) may identify the class (e.g. class value) and, thereby, the number of bits following said unary coded prefix (e.g. 551 ), as exemplary tabulated in Fig. 5 beginning at value 1. Note that, with each new class, the number of values that are codable in that class doubles.
[0097] The inventors have identified two issues with the above-mentioned exponential Golomb approach. First, the total number of values which can be coded with a certain maximum length for the unary coded prefix is odd and one value short of a power of 2 (see, e.g., values 3 or 7 in Fig. 3). To address this issue, embodiments of the invention may append an additional bit (e.g. flag 109) before the class indicator prefix (e.g. 551), serving as a significance flag or, in other words, a nonzero indicator - if this bit is, preferably, 1 , the coded lastPos value is known to be non-zero during decoding and lastPos - 1 is en / decoded by the exponential Golomb code. If, however, the bit equals, preferably, 0, lastPos is known to equal zero during decoding, and no bits of the exponential Golomb code may be signaled to the receiver (i.e., only a 0 bit is signaled, see value 0 in Fig. 3) (e.g. decoder 12).
[0098] The second issue is an inefficiency in the unary prefix coding for the class indication: if, for example, N = 8 (e.g. number of transform coefficients in the sequence of transform coefficients 103) and, more generally, known to be a power of 2, the terminating (preferably, 0) class prefix bit (e.g. of the prefix 551) of the exponential Golomb code is redundant information since the maximum length of the class prefix code, Iog2 A / when including the terminating bit, is known a-priori. Hence, in case of the last possible class being signaled, for some N, via the exponential Golomb coding, the terminating class prefix bit (preferably, 0) is excluded from writing (sending) and reading (receiving). Staying with the N= 8 example and Fig. 5, this means the fourth bit, 0, from the left in pattern 111 0 . . . (e.g. of the prefix 551), may be excluded, this is exemplary depicted in the Fig. 6.
[0099] The description proceeds with a description of a second Preferred Embodiment.
[0100] For example, only said additional bit before the class indicator prefix, referred to earlier as singlebit prefix (e.g. also referred to as the flag 109), may be context en / decoded (with nontrivial, preferably signal adaptive context) in case of context based entropy coding of the truncated and single-bit extended exponential Golomb code-words signaled according to the first preferred embodiment. Optionally, all bits up to, and including, the terminating class prefix bit (i.e., up to Iog2 N bits in all the proposed code-words, not only the first bit) (e.g. a first bit having the second binary value) may be context en / decoded.
[0101] To elaborate on the advantage of the above two aspects and other embodiments of the invention, it is noted that limiting the number of bits being context coded according to the second preferred embodiment can represents a very good tradeoff between the efficiency provided and computational resources required by context based entropy coding methods, such as CABAC [1], when applied to the above single-bit extended truncated exponential-Golomb coding (e.g. as exemplary depicted in Fig. 5 and / or Fig. 6). Furthermore, due to the simplicity and flexibility of said single-bit extended truncated exponential-Golomb coding method, it may be possible to apply the same coding scheme (e.g. 591 , 691) also to other coded parameters being signaled from sender to receiver, e.g., predictor offset parameters or differentially coded quantization parameters. This can harmonize a codec design and save further software code.
[0102] To conclude, it is worth noting that, without deviating from the above description, lastPos may not represent an index of a transform coefficient directly, but may represent an index of a tuple of such transform coefficients. In other words, the last position parameter (e.g. the position information 108) coded by means of the proposed single-bit extended exponential Golomb codebook may be the index of the last non-zero quantized tuple index (in frequency direction) where each tuple covers two or more (preferably two) transform coefficients (e.g. in the sequence of transform coefficients 103). In case of 2-tuples, this may mean that the range of possible lastPos values coded by said single-bit extended exponential Golomb codebook is halved in comparison to a direct signaling of a coefficient index. Optionally, an additional bit may be signaled after each single-bit extended exp. Golomb code-word representing 2-tuple-wise lastPos, indicating exactly the last non-zero quantized transform coefficient index within the signaled 2-tuple (e. g., 0 for even or 1 for odd index) in order to recover the sample-wise lastPos information, in addition to the 2-tuple-wise lastPos, at a receiver (e.g. decoder 12) (e.g. in other words, embodiments of the invention may be configured to code an additional bit (e.g. a flag) indicating a scheme of how the position information 108 is indicating the position 104).
[0103] In the following, some general remarks regarding embodiments of this invention are made.
[0104] The above description is extended in the following by the presentation of further embodiments. Before this, however, the description proceeds with a presentation of a possible framework or codec into which the embodiments described above as well as the embodiments described further below may be built into. Many details described in this framework are, however, optional when being combined with any of the above or subsequently described embodiments. To be more precise, the framework is described with respect to Fig. 7 which shows an encoder for encoding a multi-channel digital signal 14 (e.g. one or more channels of a multi dimensional digital waveform signal 102) into a data stream 16 as well as decoder 12 for decoding the multi-channel digital signal 14 from data stream 16. This description of Fig. 7 shall be seen as a presentation of new embodiments of the present application which result when combining any of the embodiments described above or any of the embodiments described subsequently is combined with the decoder 12 or encoder 10 of Fig. 7 either by adopting all details / functionalities described with respect to Fig. 7 or with leaving-out some of the details / functionalities described with respect to Fig. 7. Sometimes such “optional” features of Fig. 7 are explicitly identified as being optional with respect to the combination of the previously and subsequently described embodiments, but the just-mentioned possible combinations of the previously / subsequently explained embodiments with the description of Fig. 7 shall not be restricted to the these explicitly identified variations of Fig. 7 in terms of leaving-out certain features.
[0105] In Fig. 7, the multi-channel digital signal 14 is illustrated by way of an array of samples with the samples being illustrated as small squares 18. Each line / row corresponds to a certain channel of the multi-channel digital signal 14. Each channel of signal 14 may have associated therewith a respective channel ID and Fig. 7 shows these channels as being ordered according to their channel ID along vertical axis 20 which, thus, corresponds to a “source” channel axis 20. The horizontal axis 22 corresponds to time so that samples 18 forming one column, or being horizontally aligned, are samples belonging to one common time instant. Such set / column of temporally co-located samples 18 is illustrated in Fig. 7 at 24.
[0106] Each channel, thus, forms a digital time-varying signal or time / amplitude or time-to-amplitude signal. The multi-channel digital signal m might have been obtained by at least one of Electrocardiography, Electroencephalography, Electromyography or seismic measurement. Differently speaking, the multi-channel digital signal might be a bio-physiological waveform data such as an electroencephalography (EEG) signal, an electrocardiogram (ECG), or an electromyography (EMG) signal, or seismic waveform data. However, each channel / signal might alternatively be another sort of waveform signal data such as scalar media data such as an audio signal and the signal 14 might be a multi-channel audio signal. Fig. 7 illustrates the option according to which signal 14 is not coded directly, i.e., in the original domain 26, but in a so-called “coded domain” 28 which might differ from the original domain 26 by one or more of 1) channel transformation, 2) channel permutation and 3) temporal mutual channel alignment. The channel transformation, if applied, transforms, per sample time instant, a set or column 24 of samples from domain 26 to domain 28. Thus, in domain 28, the sample pitch and the time axis is the same as in domain 26, but the meaning of the channels is different, i.e., the “source” channels of domain 26 become transformed channels in domain 28. Accordingly, the vertical axis in Fig. 7 for domain 28 is denoted as 32. Note that the channel transformation might leave the number of channels unchanged so that there is the same number of channels in domain 26 as well as domain 28, but different approaches are also possible. Generally, the channel transformation would aim at reducing redundancy and trying to condense the channels’ energy onto a fewer number of channels in domain 28. As said, the channel transformation is optional. Accordingly, in general terms, the channels in domain 28 are called “coded channels” in order to distinguish them from the “original” or “source” channels of digital signal 14 in domain 26. The permutation is also optional and may be used in combination with, or without, the channel transformation. If used in combination with the channel transformation, the permutation may be performed prior to and / or or subsequent to the channel transformation in order to permute / sort the source channels prior to transformation and the coded channels subsequent to the channel transformation. The channel transformation might be a DCT, DST, FFT or any other transformation. The temporal mutual alignment is also optional and might be seen as a constant temporal alignment between the source channels or the coded channels.
[0107] The module in encoder 10 performing the one or more of channel transformation, channel permutation and temporal mutual alignment is indicated in Fig. 7 as block 34. Side information 36 might be used in order to signal information on one or more of the following: 1) The channel transformation used, 2) information on the permutation(s) among the source channels and / or coded channels and 3) information on the mutual temporal alignment / delays between the source channels or coded channels wherein the temporal mutual alignment might be restricted to full sample precision. A corresponding block 38 in decoder 12 performs the reverse step, i.e., performs one or more of: 1 ) a channel retransformation, 2) a re-permutation of the source channels and / or coded channels and 3) a temporal re-alignment of the source channels or coded channels. Note, that if no channel transformation takes place, the coded channels are, in fact, equal to the source channels except for being temporally mutually aligned or being differently sorted due to permutation. Block 38 might be controlled by the before-mentioned side information 36. Thus, the “actual coding” relates to the coded channels in domain 28. In the coded domain 28, the coded channels are depicted in Fig. 7 as lines or rows of samples 40, each extending along time axis 22, the coded channels being depicted one on top of the other along coded channel axis 32 - potentially ordered according to a coded channel ID they have associated therewith - so as to result into an array of samples 40. Again, although Fig. 7 depicts the case that the number of source channels equals the number of coded channels, the number might be different. Further, if channel transformation is used, while there is no longer a clear association between source channels on the one hand and coded channels on the other hand, the temporal association remains: For each temporally co-located samples 24, there is a corresponding temporally colocated set 42 of samples 40 of the coded channels, wherein the set 42 in domain 28 is a column and might be a set of horizontally mutually offset samples in case of, and according to, the mutual temporal alignment, if applied. In case of Fig. 7, it has been assumed that no such temporal alignment took place so that both sets 42 and 24 are pure columns in the time / channel representation.
[0108] The actual coding is done in units of so-called temporal blocks 30. The term “block” or “temporal block” 30 is used so as to denote both a temporal portion of the multi-channel signal in domain 28, i.e., the set of coded channels, as well as a temporal portion of a certain coded channel. That is, for each temporal block 30, each coded channel has a temporal block such as block 140 depicted for some temporal block 30c and same are mutually co-located. The coding is done sequentially along these blocks 140, by following a coding / decoding order, which traverses the blocks 140 temporal block 30 by temporal block 30 with traversing temporally co-located blocks of the coded channels along a channel order corresponding to the order of the coded channels along axis 32. This coding / decoding order is illustrated in Fig. 7 at 60. That is, in case of temporal block 140 being the block currently to be coded / decoded, the previously decoded / encoded temporal blocks include all preceding temporal blocks of all coded channels as well as the temporally co-located temporal blocks of coded channels preceding the coded channel 92 of temporal block 140 in channel order. These previously coded / decoded temporal blocks and their samples are illustrated in Fig. 7 by way of shading. In this regard, note that in Fig. 7, merely one temporal block 140 has been illustrated explicitly in order to reduce the complexity of Fig. 7. Thus, in the specification herein, reference sign 140 is sometimes used to indicate the currently encoded / decoded temporal block or to stand representatively for all temporal blocks. Further, as depicted in Fig. 7, the partitioning of signal 14 into temporal blocks 30 and 140, respectively, might be done in a manner so that these blocks 30 and 140, respectively, are non-overlapping. The actual coding in units of the temporal blocks 140 is performed predictively. That is, the encoder 10 comprises a block predictor 62 which predicts the samples of the currently coded temporal block 140, thereby yielding a prediction signal 64, and the prediction residual 66 formed by a subtraction between the actual sample values of temporal block 140 and the predicted samples of prediction signal 64 formed at a subtractor 68 is coded into the data stream 16 by residual coder 70. The residual coding in residual coder 70 may, or may not, involve a coding error by means of quantization. In any case, block predictor 62 uses the reconstructable version as being available by previously coded temporal blocks in order to obtain the prediction signal 64. This reconstructable version 72 might be derived at encoder 10 by means of a residual decoder 74 which reverses, potentially under coding loss, such as quantization, e.g. by means of dequantization, the residual signal 76 as coded into data stream 16, and an adder 78 which sumsup prediction signal 64 and the reconstructable residual signal 80 as obtained by residual decoder 74. To be more precise, let’s call the channel-individual temporal blocks 140 subblocks with temporally collocated subblocks of all channels forming a temporal block 30. Then, the prediction in module 62 or, to be more precise, the prediction at encoder and decoder, is performed in units of the subblocks 140, i.e. subblock wise. The encoder is free to choose different prediction modes for the subblocks within one block 30. As explained in more detail herein, within one block 30, one subblock 140 may be predicted based on one or more subblocks previously - according to the decoding order 60 - en / decoded within this block 30, while another subblock 140 within that block 30 might be coded / decoded based on the previously en / decoded subblock 140 of the same channel (but within the previous block 30). The transform residual en / decoding is then performed subblock wise by use of a one-dimensional transform signaled in the data stream as described hereinbelow.
[0109] The decoder 12 decodes the coded channels from data stream 16 in a corresponding manner, i.e., in units of the temporal blocks 30 or in temporal blocks 140, respectively, and using predictive decoding. To this end, the decoder 12 comprises a residual decoder 82, an adder 84 and a block predictor 86 which correspond to, and are mutually connected in the same manner as, elements 74, 78 and 62 of encoder 10. That is, the residual decoder 82 derives from the residual signal 76 in data stream 16 the reconstructable residual signal 80 for a currently decoded temporal block 140 which is then subject to addition with prediction signal 64 derived by block predictor 86 for temporal block 140 on the basis of the reconstructed version 72 of previously decoded temporal blocks at adder 84. The output of adder 84, thus, yields the reconstructed version 72 of the currently decoded temporal block 140 and becomes part of the pool of already decoded samples of previously decoded temporal blocks when the temporal blocks of the coded channels are, in this manner, traversed along coding / decoding order 60 so as to reconstruct the coded channels in the coded domain 28.
[0110] Note that the above description concentrated on the so-called sample prediction where samples of a current block 140 are predicted based on reconstructed samples of one or more previously decoded blocks, but coding inter dependencies, namely intra-channel and inter-channel coding dependencies may be exploited not only in terms of sample prediction, but also in terms of other coding tools involving, for instance, parameter prediction and / or context derivation.
[0111] In order to enable a high degree of random access capability, some of the temporal blocks 30 may be coded in a random access manner meaning that the coded channels therein are coded independent from previous temporal blocks 30. Imagine, for instance, that temporal blocks 30b and 30e are random access temporal blocks. Then, none of the temporal channel blocks 140 in temporal block 30b as well as 30e would depend on any preceding temporal block 140 and no coding dependency would cross these temporal blocks 30b and 30e, that is no temporal block 140 within any of temporal block 30b-30d would be coded depending on any block 140 temporally preceding temporal block 30b, and no temporal block 140 within any of temporal block 30e and following would be coded depending on any block 140 temporally preceding temporal block 30e. Thus, in other words, coding dependencies are restricted so as to not reach-out beyond the border of a random access temporal block 30b and 30e towards any preceding temporal block 30. Such restriction might also hold for intermediate temporal blocks 30c to 30d between random access temporal blocks 30b and 30e in that same may not depend on any temporal block preceding the leading one among the random access temporal blocks 30b and 30e, here block 30b. Accordingly, leading temporal borders of the random access temporal blocks 30b and 30e are indicated by bold lines in Fig. 7. In a variant, the restriction is not valid for all en / decoding stages. For instance, while the grouping might hold true for prediction, but the residual en / decoding dependencies might cross borders between channel groups. It might be the case, for instance, that for the entropy coding and decoding, all channels are coded jointly, i.e. using a single arithmetic coding engine, but that for the sake of prediction and reconstruction, the channels are grouped as described into independent groups such that, after entropy decoding, each such group can be reconstructed completely independently from each other group. This means that no prediction of sample values or any other information is supported between different channel groups.
[0112] Further, it might be that the coding of the coded channels also interrupts or restricts inter-channel dependencies. For example, one or more of the coded channels might be coded as random access coded channels so that same do not use inter-channel dependencies, but merely intrachannel dependencies. The restriction of inter-channel coding dependencies might follow the channel order 32: that is, coding of these random access coded channels and the intermediate coded channels therebetween would be restricted so as to not reach-out beyond such a random access coded channel toward any coded channel preceding that random access coded channel in channel order along axis 32. Two such random access coded channels 88a and 88b and the resulting inter-channel dependency borders are illustrated in Fig. 7. Note that the restriction of inter-channel dependencies might be differently and is illustrated here merely as an example where the definition of, along channel order 32, interspersed random access channels 88a and 88b defines channel groups covering contiguous channels along the channel order 32. Other groups of channels might be defined, which do not necessarily follow the channel order 32, and inter-channel dependencies might be restricted not to render any channel of one group dependent on a channel of any other group, and within each group the inter-channel dependencies may also by restricted or each channel might by coded inter-channel dependent on any previously coded channel within its channel group.
[0113] The block predictor 62 and 86 of encoder 10 and decoder 12, respectively, operate synchronously, i.e., they generate the same prediction signal 64 based on the previously encoded / decoded samples of previously encoded / decoded temporal blocks 140. On encoder side 10, the prediction for a certain temporal block 140 may be accompanied or determined by one or more prediction parameters. Same might be determined on encoder side based on a rate / distortion optimization. These prediction parameters 90 are coded into data stream 16 and they are decoded from data stream 16 and used by block predictor 86 so as to perform the same prediction.
[0114] It might be that encoder 10 and decoder 12 support more than one prediction mode. For instance, encoder 10 and decoder 12 may support an intra prediction mode (which mode may also be called block-copy mode) according to which the currently encoded / decoded temporal block 140 is predicted based on the reconstructable sample values of previously encoded / decoded temporal blocks of the same coded channel to which the currently encoded / decoded temporal block 140 belongs, which is coded channel 92 in the example of Fig. 7. Additionally or alternatively, encoder 10 and decoder 12 may support an inter-prediction mode (which mode may also be called crosschannel prediction mode) according to which the currently encoded / decoded temporal block 140 is predicted based on the reconstructable sample values of previously encoded / decoded temporal blocks of one or more coded channels preceding - in coding order 32 - the coded channel 92 to which the currently encoded / decoded temporal block 140 belongs. Additionally or alternatively, there may be a mixed prediction mode according to which the prediction signal 64 is obtained by both, reconstructed / reconstructable sample values of previously encoded / decoded temporal blocks of coded channel 92 itself as well as reconstructed / reconstructable sample values of one or more coded channels preceding coded channel 92 in channel order along axis 32. Beyond this, there may be temporal blocks 140 which are coded without any prediction at encoder 10 and decoded without any prediction at decoder 12 such as the first temporal blocks 140 in the tiles 94 resulting from mutually separating the temporal blocks by means of the random access borders 96 on the one hand and the random access channel borders 98 on the other hand. This corresponds to the prediction signal 64 being set to zero and this may form an additional mode which could be called bypass mode. Additionally, or alternatively, there may be other modes such as ones deriving a DC predictor or linear function predictor for block 64 based on immediately preceding samples which immediately precede block 140. The prediction parameters 90 may, thus, contain for a currently encoded / decoded temporal block 140 a prediction mode flag or prediction mode indicator indicating the prediction mode to be used for this currently encoded / decoded temporal block 140 and, optionally, one or more parameters parameterizing the prediction mode to be used for this currently encoded / decoded temporal block 140. It might also be that the prediction parameters are themselves coded predictively from already reconstructed blocks 140. In this prediction process, the laid out random-access capabilities in channel- and temporal-direction are, as an example, always maintained, i.e. the mentioned prediction of prediction parameters may never be supported across such a random access segment.
[0115] As mentioned, the aforementioned coding dependencies ought not to cross any of the borders 96 and 98 not only result from the just-described sample prediction capabilities of block predictor 62 and 86, respectively, but may optionally also result from other mechanisms such as parameter prediction according to which parameters such as the aforementioned prediction parameters 90 for a certain temporal block 140 are predicted based on coding parameters conveyed in the data stream 16 for any previous temporal block, or context derivation for context-adaptive entropy coding / decoding any coding parameter such as the prediction parameters 90 or any other side information such as side information 76 and 36 for temporal block 140 based on any coding parameter conveyed in the data stream 16 for any preceding temporal block.
[0116] That is, summarizing, the encoder 10 encodes the multi-channel signal 14 by transferring it into the coded domain 28 and then coding the coded channels into data stream 16 in the just-described block-wise and predictive manner, wherein decoder 12 decodes the coded channels of coded domain 28 from data stream 16 and the corresponding block-wise and predictive manner with then gaining the multi-channel signal 14 in its original form 26 based on the coded channels in coded domain 28 by means of segment 38. As said, the channel transformation is optional and if not used, each sample 40 in the coded domain 28 really corresponds to one sample 18 in the original domain 26. If, further, the temporal mutual alignment is not used, each sample 40 exactly corresponds to a sample 18 in the original domain 26 at exactly the same time instant or, differently speaking, all temporally co-located samples 40 in coded domain 28 remain mutually temporally co-located in the original domain 26.
[0117] It should be noted that the temporal blocks 30 might, other than illustrated in Fig .5, vary in block length rather than being of a constant length as depicted in Fig. 7. For instance, encoder 10 may decide on the length of blocks 30 and signal the block length of blocks 30 (and the corresponding temporal blocks 140 of the coded channels) within data stream 16. Such signaling might be done on block level, such as for each temporal block 30 or, differently speaking for each temporally aligned bundle of blocks 140, so that the encoder may decide on the block size on the fly, or the block length might be signaled in the stream 16 on a larger scope such as for a sequence of blocks or even the whole stream 16.
[0118] As to the residual coder and residual decoder 70 and 82, they may use transform coding / decoding in order to convey the residual signal 76 in data stream 16. That is, the residual signal 80 may be conveyed in data stream 16 in transform or spectral domain by way of transform coefficients in residual signal 76. The transform domain might be a DCT, DST or an FFT. The transform may be non-overlapping, i.e. it may only transform residual signal 80 and its re-transform may only cover residual signal 76 within block 140, and / or may be non-windowed, i.e. the residual signal might be transformed without any transform window used to temporally shape the residual signal 80 before the transform. The transform domain, i.e. the transformation leading from time domain to transform domain which is used by the encoder to transform the prediction residual signal 80 to be coded und the corresponding re-transformation leading from transform domain to time domain which is used by the decoder to derive the prediction residual signal 80, or the transformation, might be selected from a set of available transforms including, for instance, one or more of 1) one or more DCTs, 2) one or more DSTs and 3) an identity transform according to which the prediction residual signal 80 is coded into the data stream 14 in time domain directly. The transform may be critically sampled in that the number of transform coefficients resulting from the samples of one block 140 may equal the number of samples of block 140. Again, the samples might be the residual samples or may be, in case of the bypass mode, the channel samples directly. 1
[0119] The transform coefficients might be encoded by quantization, i.e. they may be quantized with the quantized coefficients then being coded in the data stream 16. Dequantization may occur at decoding. For quantization, either a scalar uniform reconstruction quantizer or a low complexity vector quantizer might be used. In order to determine the quantization indices, the encoder may perform some optimization algorithm such as a rate-distortion optimized scalar quantization, or a trellis quantization with the goal to approximately minimize an approximated Lagrangian ratedistortion cost. At the decoder, the reconstruction process that yields (e.g. yiels) the transform coefficients may be conducted by multiplying the coded quantization indices with a certain stepsize and, in case of the use of a low-complexity vector quantizer, by additionally invoking a statemachine based on the parity of previously decoded quantization indices in order to reconstruct the current quantization index.
[0120] In order to control the quantization noise, the transform coefficients might be subject to noise shaping. Spectral noise shaping may be used to shape the quantization noise spectrally. This may be done by signaling in the data stream spectral-band scale factors, i.e. a scale factor per spectral band, which represent a transfer function of a spectral filter which approximates the spectral envelope of the signal within the current block 140 (or its prediction residual, respectively), or signaling filter coefficients defining a temporal filter having a filter transfer function which approximates the spectral envelope of the signal within the current block 140 (or its prediction residual, respectively). On encoder side, spectral noise shaping may be applied in spectral domain by multiplying an inverse of scale factors, either directly signaled in the data stream or derivable from the filter coefficients by filter-to-factor conversion, with the transform coefficients before quantization. That is, at encoder, the coefficients are shaped by the inverse of the spectral envelope. At decoder side, spectral shaping may be applied in spectral domain by multiplying scale factors, either directly signaled in the data stream or derived from the filter coefficients by filter-to-factor conversion, with the transform coefficients, with then . That is, at decoder, the coefficients are shaped by the spectral envelope before applying retransformation. Additionally or alternatively, temporal noise shaping might be applied. To this end, TNS filter coefficients might be determined and signaled by the encoder. The TNS filter coefficients may represent a transfer function which approximates the temporal envelope of the current block 140 (or its residual signal). The encoder may apply TNS filtering using the filter coefficients by spectrally filtering the possibly spectrally shaped transform coefficients so as to filter them with a transfer function corresponding to an inverse of the temporal envelope. The TNS filter coefficients might be derived by linear prediction analysis of the possibly spectrally shaped transform coefficients so as to derive a linear prediction filter, then used as TNS filter, which minimizes a prediction residual when spectrally applied on the possibly spectrally shaped transform coefficients. At the encoder, the TNS filtered coefficients are then quantized and entropy coded. At decoder side, the inverse takes place: the possibly spectrally shaped transform coefficients are inversely TNS filtered before applying retransformation. Additionally or alternatively, noise filling might be used. The filling may be applied to zero-quantized portions of the spectrum and controlled by the encoder via corresponding noise filling parameters.
[0121] As to the encoding / decoding the block or sequence of quantized transform coefficients of a current block into / from the data stream 16, arithmetic coding, such as context-adaptive binary arithmetic coding, CABAC, may be used. The CABAC encoding / decoding may be (e.g. by) performed frame wise. That is, in each channel, the sequence of blocks 140 may be partitioned into immediately consecutive blocks 140, which form frames. This partitioning may be equal among the channels so that, again, a frame denotes both a temporal portion within each channel individually, as well as a temporal portion of the multi-channel signal, i.e. a collection of temporally aligned frames. Within each frame, the sequence of blocks 140 are CABAC en / decoded with once initializing the contexts and resetting the internal CABAC state at the beginning and then updating the contexts’ probabilities during en / decoding the respective frame. That is, blocks 140 are CABAC decodable merely in units of frames. The context initialization might be done independent from previous frames, or depending on the contexts as manifesting itself at the end of, of during, the en / decoding a previous frame.
[0122] Some deblocking processing might be used to avoid blocking artifacts. If, alternatively, an overlapped transform is used, an overlap-add processing with re-transforms of immediately preceding / succeeding temporal blocks of the same coded channel might be used in order to completely reconstruct the current temporal block’s 140 residual signal 76.
[0123] Besides such transform-(residual)-coded blocks there might be temporal blocks 140 which, additionally or alternatively, are coded using, besides the block prediction by block predictor 62 / 86 - which could be called a primary prediction - a secondary sample-wise prediction of the residual samples in residual block 66 such as by predicting a current sample’s residual sample by means of already decoded values of preceding - in sample coding order - residual samples in block 66 or 80, with then correcting same by means of a secondary-prediction-residual sample decoded from the data stream 16. The secondary-prediction-residual samples for such a block may (e.g. be) coded into the data stream en block in a transform domain or sample-wise in time domain. Note that the afore-mentioned spectral shaping of the residual signal of a block 140 might be seen as a sample wise residual prediction, i.e. the case where filter coefficients are signaled for a block which define a temporal filter having a filter transfer function which approximates the spectral envelope of the residual signal within a current block 140. In sample wise residual prediction, the residual predictor on a current block 140 might either be chosen out of a fixed set of prediction modes, where an index to such a residual prediction mode is signaled in the bit-stream, or the residual prediction mode might be ‘signal adaptive’. In the latter case, prediction filter coefficients for the residual predictor are determined at the encoder by solving for example a linear equation, and are then quantized and transmitted to the decoder. At the decoder, the coefficients are inverse quantized and then the sample-wise prediction is conducted with these coefficients. The number of used coefficients may vary per block and might also be signaled in the bit-stream. Additionally, it might optionally (i.e. indicated by some information in the bit-stream) be supported to invoke collocated samples from a previous block for the sample wise residual prediction. Finally, the coefficients of the sample wise residual prediction might be coded predictively, i.e. be predicted from used coefficients of a previous block, where only the differences to the current coefficients are transmitted.
[0124] A final note shall be made with respect to the juxtaposition of frames, blocks 140, channels and channel groups and regarding decoding order. The description above already described the fact that the channels might be grouped into channel group with each channel group being coded independently from each other, meaning that the blocks 140 in a certain channel group are coded without dependencies from channels outside their channel group. The decoding order 60, thus, would traverse the channels channel-group individually, channel group by channel group. Within each channel group, the blocks 140 are traversed as described: all temporally aligned blocks 140 of all channels fist, then proceeding with the next blocks 140 and so forth. A frame may have a sequence of blocks of a channel group encoded thereinto along the mentioned decoding order (e.g. order order), such as n temporally consecutive blocks 140 for all channels of a channel group. IF the channel group had m channels, m*n block104 would, thus, be coded into the frame. As mentioned, there might be dependent frames, for which the CABAC contexts are adopted from the preceding frame of the same channel group, i.e. the one having encoded the immediately preceding block 140. For such dependent frames, not only CABAC contexts may be adopted from the preceding frame, but it may also be allowed to allow for prediction from the preceding frame to the dependent frame. Prediction, and possibly also any coding dependencies, towards channels outside the channel group and, within the channel group, towards frames temporally preceding the mostly recently previously en / decoded independent frame would be disallowed. Thus, each tile shown in Fig. 7 by bold lines may represent a sequence of an independent frame flowed by zero, one or more dependent frames.
[0125] As mentioned before, Fig. 7 only represents a possible “framework” into which the previously described embodiments and the embodiments described subsequently may be built into. Many modifications may be performed with respect to Fig. 7, and some of these modifications might be mentioned in the subsequent description with respect to certain ones of the subsequently described embodiments, but these modifications shall then be treated as being also applicable with respect to other ones of the subsequently described embodiments.
[0126] The description is now resumed with respect to the announced subsequently described embodiments.
[0127] Fig. 8 shows a schematic view of a method 8001 for decoding from a data stream. The method 8001 is configured for decoding a one-dimensional digital waveform signal from a data stream by use of block-wise transform decoding, the method comprises decoding 8002 a sequence of transform coefficients of a predetermined block of the one-dimensional digital waveform signal from the data stream by deriving 8003 a position information from the data stream, and locating 8004, using the position information, a position in the sequence of transform coefficients. The decoding 8002 further comprises decoding 8005 one or more first transform coefficients of the sequence of transform coefficients from the data stream, which precede the position in the sequence of transform coefficients, and attributing a predetermined value to one or more second transform coefficients of the sequence of transform coefficients, which follow the position in the sequence of transform coefficients. In the method 8001 , the deriving 8003 the position information from the data stream is done by decoding from the data stream a codeword using a truncated exponential Golomb code which depends on a block size of the predetermined block, an / or a flag indicating whether a number of the first transform coefficients is one or greater than one, and, if so, a codeword using an exponential Golomb code.
[0128] Fig 9 shows a schematic view of a method 9006 for encoding into a data stream, The method 9006 is for encoding a one-dimensional digital waveform signal into a data stream by use of blockwise transform encoding, the method comprises encoding 9007 a sequence of transform coefficients of a predetermined block of the one-dimensional digital waveform signal into the data stream by locating 9008, a position in the sequence of transform coefficients and encoding 9009 the position, using a position information, into the data stream. The encoding 9007 further comprises encoding 9010 one or more first transform coefficients of the sequence of transform coefficients into the data stream, which precede the position in the sequence of transform coefficients, wherein one or more second transform coefficients that follow the position in the sequence of transform coefficient are to be inferred to be equal to a predetermined value by a decoder. The encoding 9009 the position information into the data stream is done by encoding into the data stream a codeword using a truncated exponential Golomb code which depends on a block size of the predetermined block, and / or a flag indicating whether a number of the first transform coefficients is one or greater than one, and, if so, a codeword using an exponential Golomb code.
[0129]
[0130] alternatives:
[0131] Although some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method, where a block or device corresponds to a method step or a feature of a method step. Analogously, aspects described in the context of a method step also represent a description of a corresponding block or item or feature of a corresponding apparatus. Some or all of the method steps may be executed by (or using) a hardware apparatus, like 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 executed by such an apparatus.
[0132] Depending on certain implementation requirements, embodiments of the invention can be implemented in hardware or in software. The implementation can be performed using a digital storage medium, for example a floppy disk, a DVD, a Blu-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate (or are capable of cooperating) with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium may be computer readable.
[0133] Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed.
[0134] Generally, embodiments of the present invention can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code may for example be stored on a machine readable carrier.
[0135] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0136] 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.
[0137] A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein. The data carrier, the digital storage medium or the recorded medium are typically tangible and / or non-transitionary.
[0138] 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 for example be configured to be transferred via a data communication connection, for example via the Internet.
[0139] 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.
[0140] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0141] A further embodiment according to the invention comprises an apparatus or a system configured to transfer (for example, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device or the like. The apparatus or system may, for example, comprise a file server for transferring the computer program to the receiver.
[0142] In some embodiments, a programmable logic device (for example a field programmable gate array) may be used to perform some or all of the functionalities of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor in order to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
[0143] The apparatus described herein may be implemented using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0144] The apparatus described herein, or any components of the apparatus described herein, may be implemented at least partially in hardware and / or in software.
[0145] 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.
[0146] The methods described herein, or any components of the apparatus described herein, may be performed at least partially by hardware and / or by software.
[0147] The above described embodiments are merely illustrative for the principles of the present invention. It is understood that modifications and variations of the arrangements and the details described herein will be apparent to others skilled in the art. It is the intent, therefore, to be limited only by the scope of the impending patent claims and not by the specific details presented by way of description and explanation of the embodiments herein.
[0148] References
[0149] [1] Wikipedia, httDs: / / en.wikiDedia.org / wiki / Context-adaptive binary arithmetic coding, Jan.
[0150] 2024.
Claims
Claims1. Decoder (12) for decoding a one-dimensional digital waveform signal (102) from a data stream (16) by use of block-wise transform decoding, the decoder (12) configured todecode a sequence of transform coefficients (103) of a predetermined block (101) of the onedimensional digital waveform signal (102) from the data stream (16) byderiving a position information (108) from the data stream (16),locating, using the position information (108), a position (104) in the sequence of transform coefficients (103); anddecoding one or more first transform coefficients (105) of the sequence of transform coefficients (103) from the data stream (16), which precede the position (104) in the sequence of transform coefficients (103), and attributing a predetermined value to one or more second transform coefficients (106) of the sequence of transform coefficients (103), which follow the position (104) in the sequence of transform coefficients (103),wherein the decoder (12) is configured to derive the position information (108) from the data stream (16) by decoding from the data stream (16)a) a codeword (107), using a truncated exponential Golomb code, which depends on a block size of the predetermined block (101 ), orb) a flag indicating whether a number of the first transform coefficients (105) is one or greater than one, and, if so, a codeword (107) using an exponential Golomb code.
2. The decoder (12) of claim 1 , whereinthe decoder (12) supports different block sizes, each block size being associated with a corresponding number of transform coefficients in the sequence of transform coefficients (103).
3. The decoder (12) of claim 2, whereinthe corresponding number of transform coefficients is a power of two.
4. The decoder (12) of any of the claims 1 to 3, whereinthe flag (109) is a single bit immediately preceding, if indicating that the number of the first transform coefficients (105) is one or greater than one, the codeword (107).
5. The decoder (12) of any of the claims 1 to 4, whereinthe predetermined value is zero.
6. The decoder (12) of any of the claims 1 to 5, whereinthe truncated exponential Golomb code is composed of a prefix (551) indicating a class value using a truncated unary code, followed by, if the class value exceeds zero, a suffix (552) of a length equal to the class value.
7. The decoder (12) of claim 6, whereinthe truncated unary code is composed of codewords of x first binary values followed by, if x is smaller than or equal X, a second binary value, wherein the decoder (12) is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients (103).
8. The decoder (12) of claim 7, whereinthe decoder (12) is configured to determine X based on the square root of the number of coefficients in the sequence of transform coefficients (103) or based on log2(lseq) + k with k e Z and lseqthe number of coefficients in the sequence of transform coefficients (103).
9. The decoder (12) of claim 7 or 8, whereinthe decoder (12) is configured to determine X based on xmax, wherein xmaxis a maximal number of first binary values needed for any position information in the sequence of transform coefficients (103).
10. The decoder (12) of any of the claims 1 to 9, whereinthe exponential Golomb code is composed of a prefix (551) indicating a class value using a unary code, followed by, if the class value exceeds zero, a suffix (552) of a length equal to the class value.11 . The decoder (12) of claim 10, whereinthe unary code is composed of codewords of x first binary values followed by, if x is smaller than or equal X, a second binary value, wherein the decoder is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients (103).
12. The decoder (12) of claim 11 , whereinthe decoder (12) is configured to determine X based on the square root of the number of coefficients in the sequence of transform coefficients (103) or based on log2(lseq) + k with k e Z and lseqthe number of coefficients in the sequence of transform coefficients (103).
13. The decoder (12) of claim 11 or 12, whereinthe decoder (12) is configured to determine X based on xmax, wherein xmaxis a maximal number of first binary values needed for any position information in the sequence of transform coefficients (103).
14. The decoder (12) of any of the claims 6 to 13, whereinthe decoder (12) is configured to determine a last-coefficient index by using the class value and a value derived from the suffix (551), wherein the one or more first transform coefficients (105) encompass all transform coefficients of the sequence of transform coefficients (103) having a coefficient index smaller than or equal to the last-coefficient index.
15. The decoder (12) of claim 14, whereinthe last-coefficient index is calculated using the following term2q+ r + jwith j e l, q being the class value and r being the value derived from the suffix (551).
16. The decoder (12) of claim 15, whereinj equals one.
17. The decoder (12) of any of the claims 1 to 16, whereinthe decoder (12) is configured to use a context-adaptive binary arithmetic decoding scheme for decoding the flag (109).
18. The decoder (12) of claim 17, whereinthe decoder (12) is configured to use fixed bypass probabilities for the codeword.
19. The decoder (12) of any of the claims 1 to 18, whereinthe decoder (12) is configured to use a context-adaptive binary arithmetic decoding scheme for decoding the codeword.
20. The decoder (12) of claim 19, whereinthe decoder (12) is configured to use fixed bypass probabilities for the suffix (551) and use signal-adaptive probabilities for the prefix (552).
21. The decoder (12) of any of the claims 1 to 20, whereinthe decoder (12) is configured to use a context-adaptive binary arithmetic decoding scheme for decoding the codeword (107), whereinthe decoder (12) is configured to use fixed bypass probabilities for the suffix (551) and use signal-adaptive probabilities for the prefix (552).
22. The decoder (12) of any of the claims 1 to 21 , whereinthe sequence of transform coefficients (103) represents a DCT, DST or FFT of the predetermined block (101).
23. The decoder (12) of any of the claims 1 to 22, whereinthe decoder is configured to apply a reverse transformation onto the sequence of transform coefficients (103) to obtain the predetermined block (101).
24. The decoder (12) of any of the claims 1 to 23, whereinthe sequence of transform coefficients (103) contains a DC transform coefficient.
25. The decoder (12) of claim 24, whereineach of the first transform coefficients (105) of the sequence of transform coefficients (103) and the second transform coefficients (106) of the sequence of transform coefficients (103) is assigned a coefficient index, whereinthe coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients are ordered ascendant or descendant, whereinthe DC transform coefficient has a coefficient index of zero.
26. The decoder (12) of any of the claim 24 or 25, whereinthe decoder (12) is configured to decode the first transform coefficients (105) sequentially, either starting from the DC transform coefficient to the coefficient index N, wherein N is a largest coefficient index of any coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients (103), or starting from the coefficient index N to the DC transform coefficient.
27. The decoder (12) of any of the claim 24 or 25, whereinthe decoder (12) is configured to decode the first transform coefficients (105) sequentially, starting from the DC transform coefficient to the coefficient index N, wherein N is a largest coefficient index of any coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients (103), or starting from the coefficient index N to the DC transform coefficient.
28. The decoder (12) of any of the claims 1 to 27, whereinthe decoder (12) is configured to decode each of the first transform coefficients (105) using a binarization including a significance bin indicating whether the respective first transform coefficient (105) is zero or not, wherein the decoder (12) is configured to decode the significance bin from the data stream (16) for each first transform coefficient (105) except the first transform coefficient (105) having index N, and infer that the first transform coefficient (105) having index N is non zero.
29. Encoder (10) for encoding a one-dimensional digital waveform signal (102) into a data stream (16) by use of block-wise transform encoding, the encoder (10) configured toencode a sequence of transform coefficients (103) of a predetermined block (101) of the onedimensional digital waveform signal (102) into the data stream (16) bylocating, a position (104) in the sequence of transform coefficients (103),encoding the position (104), using a position information (108), into the data stream (16); andencoding one or more first transform coefficients (105) of the sequence of transform coefficients (103) into the data stream (16), which precede the position (104) in the sequence of transform coefficients (103), wherein one or more second transform coefficients (106) that follow the position (104) in the sequence of transform coefficient (103) are to be inferred to be equal to a predetermined value by a decoder (12),wherein the encoder (10) is configured to encode the position information (108) into the data stream (16) by encoding into the data stream (16)a) a codeword (107), using a truncated exponential Golomb code, which depends on a block size of the predetermined block (101 ), orb) a flag (109) indicating whether a number of the first transform coefficients (105) is one or greater than one, and, if so, a codeword (107) using an exponential Golomb code.
30. The encoder (10) of claim 29, whereinthe encoder (10) supports different block sizes, each block size being associated with a corresponding number of transform coefficients in the sequence of transform coefficients (103).31 . The encoder (10) of claim 30, whereinthe corresponding number of transform coefficients is a power of two.
32. The encoder (10) of any of the claims 29 to 31 , whereinthe flag (109) is a single bit immediately preceding, if indicating that the number of the first transform coefficients (105) is one or greater than one, the codeword (107).
33. The encoder (10) of any of the claims 29 to 32, whereinthe predetermined value is zero.
34. The encoder (10) of any of the claims 29 to 33, whereinthe truncated exponential Golomb code is composed of a prefix indicating a class value using a truncated unary code, followed by, if the class value exceeds zero, a suffix of a length equal to the class value.
35. The encoder (10) of claim 34, whereinthe truncated unary code is composed of codewords of x first binary values followed by, if x is smaller than or equal X, a second binary value, wherein the encoder (10) is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients (103).
36. The encoder (10) of claim 35, whereinthe encoder (10) is configured to determine X based on a logarithm of the number of coefficients in the sequence of transform coefficients (103) or based on log2(Zse(?) + k with k e Z and lseqthe number of coefficients in the sequence of transform coefficients (103).
37. The encoder (10) of claim 34 or 35, whereinthe encoder (10) is configured to determine X based on xmax, wherein xmaxis a maximal number of first binary values needed for any position information (108) in the sequence of transform coefficients (103).
38. The encoder (10) of any of the claims 29 to 37, whereinthe exponential Golomb code is composed of a prefix indicating a class value using a unary code, followed by, if the class value exceeds zero, a suffix of a length equal to the class value.
39. The encoder (10) of claim 38, whereinthe unary code is composed of codewords of x first binary values followed by, if x is smaller than or equal X, a second binary value, wherein the encoder (10) is configured to determine X based on a number of transform coefficients in the sequence of transform coefficients (103).
40. The encoder (10) of claim 39, whereinthe encoder (10) is configured to determine X based on a logarithm of the number of coefficients in the sequence of transform coefficients (103) or based on log2(Zse(?) + k with k e Z and lseqthe number of coefficients in the sequence of transform coefficients (103).41 . The encoder (10) of claim 39 or 40, whereinthe encoder (10) is configured to determine X based on xmax, wherein xmaxis a maximal number of first binary values needed for any position information (108) in the sequence of transform coefficients (103).
42. The encoder (10) of any of the claims 34 to 41 , whereinthe encoder (10) is configured to determine the class value and the suffix using a lastcoefficient index, wherein the one or more first transform coefficients (105) encompass all transform coefficients of the sequence of transform coefficients (103) having a coefficient indexsmaller than or equal to the last-coefficient index.
43. The encoder (10) of claim 42, whereinthe class value is based on the following termLlog2(ii)Jthe suffix is based on the following termit- 2llog2(i;)lwith itbeing the last coefficient index and [■ J being the floor function.
44. The encoder (10) of any of the claims 29 to 43, whereinthe encoder (10) is configured to use a context-adaptive binary arithmetic encoding scheme for encoding the flag (109).
45. The encoder (10) of claim 44, whereinthe encoder (10) is configured to use fixed bypass probabilities for the codeword (107).
46. The encoder (10) of any of the claims 29 to 45, whereinthe encoder (10) is configured to use a context-adaptive binary arithmetic encoding scheme for encoding the codeword (107).
47. The encoder (10) of claim 46, whereinthe encoder (10) is configured to use fixed bypass probabilities for the suffix and use signal-adaptive probabilities for the prefix.
48. The encoder (10) of any of the claims 28 to 47, whereinthe encoder (10) is configured to use a context-adaptive binary arithmetic encoding scheme for encoding the codeword (107), whereinthe encoder (10) is configured to use fixed bypass probabilities for the suffix and use signal-adaptive probabilities for the prefix.
49. The encoder (10) of any of the claims 29 to 48, whereinthe sequence of transform coefficients (103) represents a DCT, DST or FFT of the predetermined block (101).
50. The encoder (10) of any of the claims 29 to 49, whereinthe encoder (10) is configured to apply a transformation onto the predetermined block (101) to obtain the sequence of transform coefficients (103).51 . The encoder (10) of any of the claims 29 to 50, whereinthe sequence of transform coefficients (103) contains a DC transform coefficient.
52. The encoder (10) of claim 51 , whereineach of the first transform coefficients (105) of the sequence of transform coefficients (103) and second transform coefficients (106) of the sequence of transform coefficients (103) is assigned a coefficient index, whereinthe coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients (103) are ordered ascendant or descendant, whereinthe DC transform coefficient has a coefficient index of zero.
53. The encoder (10) of any of the claim 52 or 53, whereinthe encoder (10) is configured to encode the first transform coefficients (105) sequentially, either starting from the DC transform coefficient to the coefficient index N, wherein N is a largest coefficient index of any coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients (103), or starting from the coefficient index N to the DC transform coefficient.
54. The encoder (10) of any of the claim 52 or 53, whereinthe encoder (10) is configured to encode the first transform coefficients (105) sequentially, starting from the DC transform coefficient to the coefficient index N, wherein N is a largest coefficient index of any coefficient indices of the first transform coefficients (105) of the sequence of transform coefficients (103), or starting from the coefficient index N to the DC transform coefficient.55: The encoder (10) of any of the claims 29 to 54, whereinthe encoder (10) is configured to encode each of the sequence of first transform coefficients (105) individually using a binarization including a significance bin indicating whether the respective first transform coefficient (105) is zero or not, wherein the encoder (10) is configured to encode the significance bin into the data stream (16) for each first transform coefficient (105) except the first transform (105) coefficient having index N.
56. A system comprising:an encoder (10) according to one of claims 101 to 127 for encoding a signal (102) into a data stream (16), anda decoder (12) according to one of claims 1 to 28 for decoding the data stream (16) to reconstruct the signal (102).
57. Method (8001) for decoding a one-dimensional digital waveform signal (102) from a data stream (16) by use of block-wise transform decoding, the method comprisesdecoding (8002) a sequence of transform coefficients (103) of a predetermined block (101) of the one-dimensional digital waveform signal (102) from the data stream (16) byderiving (8003) a position information (108) from the data stream (16),locating (8004), using the position information (108), a position (104) in the sequence of transform coefficients (103); anddecoding (8005) one or more first transform coefficients (105) of the sequence of transformcoefficients (103) from the data stream (16), which precede the position in the sequence of transform coefficients (103), and attributing a predetermined value to one or more second transform coefficients (106) of the sequence of transform coefficients (103), which follow the position (104) in the sequence of transform coefficients (103),deriving the position information (108) from the data stream (16) by decoding from the data stream (16)a) a codeword (107), using a truncated exponential Golomb code, which depends on a block size of the predetermined block (101), orb) a flag (109) indicating whether a number of the first transform coefficients (105) is one or greater than one, and, if so, a codeword (107) using an exponential Golomb code.
58. Method (9006) for encoding a one-dimensional digital waveform signal (102) into a data stream (16) by use of block-wise transform encoding, the method comprisesencoding (9007) a sequence of transform coefficients (103) of a predetermined block (101) of the one-dimensional digital waveform signal (102) into the data stream (16) bylocating (9008), a position (104) in the sequence of transform coefficients (103), encoding (9009) the position (104), using a position information (108), into the data stream (16); andencoding (9010) one or more first transform coefficients (105) of the sequence of transform coefficients (103) into the data stream (16), which precede the position (104) in the sequence of transform coefficients (103), wherein one or more second transform coefficients (106) that follow the position (104) in the sequence of transform coefficient (103) are to be inferred to be equal to a predetermined value by a decoder (12),encoding the position information (108) into the data stream (16) by encoding into the data stream (16)a) a codeword (107), using a truncated exponential Golomb code, which depends on a block size of the predetermined block (101 ), orb) a flag (109) indicating whether a number of the first transform coefficients (105) is one or greater than one, and, if so, a codeword (107) using an exponential Golomb code.
59. A data stream (16) having encoded therein a one-dimensional digital waveform signal (102) using the method according to claim 58.
60. A computer program for implementing the method of claim 57 or 58 when being executed on a computer or signal processor.
Citation Information
Patent Citations
Selection of the maximum dynamic range of transformed data and the data precision of transform matrices according to the bit depth of input data
EP2984828B1