Decoder, encoder, methods and computer programs using a floating-point representation in solving a linear equation system for inter-channel prediction

The method uses a floating-point representation for intermediate results in integer arithmetic to solve linear equation systems, addressing the inefficiencies of existing coding systems, achieving efficient and accurate inter-channel prediction across different devices.

WO2026093472A1PCT designated stage Publication Date: 2026-05-07FRAUNHOFER GESELLSCHAFT ZUR FORDERUNG DER ANGEWANDTEN FORSCHUNG EV
View PDF 1 Cites 0 Cited by

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-30
Publication Date
2026-05-07

AI Technical Summary

Technical Problem

Existing coding systems face a trade-off between computational efficiency and coding quality due to the use of integer arithmetic for inter-prediction, which is computationally expensive and reduces accuracy, while floating-point arithmetic lacks reproducibility across different devices.

Method used

A method that uses a floating-point representation for intermediate results in solving a linear equation system, combined with integer arithmetic for prediction and correction, allowing for efficient computation with high coding quality by separating magnitude and scale through significand and exponent, enabling the use of low-precision integer data types without significant loss of accuracy.

Benefits of technology

This approach maintains high coding quality and computational efficiency by ensuring deterministic and reproducible results across diverse hardware platforms, accommodating a wide range of bit depths and large numerical values, while reducing computational costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2025081441_07052026_PF_FP_ABST
    Figure EP2025081441_07052026_PF_FP_ABST
Patent Text Reader

Abstract

Embodiments are related to a decoder for decoding a multi-channel signal by block-based predictive decoding. Further embodiments of the invention are related to an encoder for encoding a multi-channel signal by block-based predictive encoding. Further embodiments of the invention are related to corresponding methods and computer programs.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] DECODER, ENCODER, METHODS AND COMPUTER PROGRAMS USING A FLOATING-POINT REPRESENTATION IN SOLVING A LINEAR EQUATION SYSTEM FOR INTER-CHANNEL PREDICTION

[0002] Description

[0003] Technical Field

[0004] Embodiments of the invention are related to decoders for decoding a multi-channel-signal by block-based predictive decoding. Further embodiments are related to encoders for encoding a multi-channel signal by block-based predictive encoding. Further embodiments are related to corresponding methods, data streams and computer programs. Embodiments of the invention are configured to use a floating-point representation of intermediate results when solving a linear equation system.

[0005] Embodiments of the invention may also be titled as “inter-channel prediction by use of solving a linear equation system” or “concepts for solving small equation systems with large values for cross-channel prediction”.

[0006] Background of the Invention

[0007] In existing coding systems, integer arithmetic is typically used to ensure bit-exact reproducibility of prediction and reconstruction results across different encoder and decoder implementations and computer architectures, particularly when solving linear equation systems for inter-prediction. This approach prevents drift in the decoded signal and ensures high coding quality. While integer arithmetic guarantees deterministic results, it is less favorable in terms of computational efficiency because integer divisions and associated rounding operations can be computationally expensive and can reduce numerical accuracy. Typical floating-point arithmetic, on the other hand, is not fully reproducible across different devices or platforms, which can also degrade coding quality. Optionally, very large amounts of data can be encoded to facilitate the inter-prediction, however, such an approach drastically reduces coding efficiency, making this approach less practical for high-throughput applications.

[0008] Therefore, a concept is desired which offers an improved compromise between computational costs, a coding quality and coding efficiency.

[0009] This is achieved by the subject-matter of the independent claims of the present application. Further embodiments according to the invention are defined by the subject-matter of the dependent claims of the present application.

[0010] of the Invention

[0011] In the following, additional embodiments and aspects of the invention will be described which can be used individually or in combination with any of the features and functionalities and details described herein.

[0012] An embodiment according to the invention comprises a decoder for decoding a multichannel signal (e.g. from a data stream) by block-based predictive decoding, configured to apply an inter-channel prediction on a current block of a first channel by

[0013] weighting a corresponding block of each of a one or more second channels using a scaling factor for the respective second channel to obtain a scaled inter-channel predictor from each of the one or more second channels and

[0014] forming a sum over the scaled inter-channel predictor (e.g. predictors; e.g. scaled predictor) of the one or more second channels and an offset so as to obtain a scaled and offset inter-channel predictor,

[0015] determine the scaling factor for each of the one or more second channels and the offset by solving a linear equation system which minimizes a square prediction error when using the inter-channel prediction to predict an already decoded portion of the first channel from a corresponding portion (e.g. from corresponding portions) of the one or more second channels, and

[0016] correct the scaled and offset inter-channel predictor using a prediction residual (e.g. for the current block of the first channel) decoded from a data stream,

[0017] wherein the decoder is configured to

[0018] perform the prediction, determination and the correction in an integer arithmetic, and solve the linear equation system by

[0019] solving the linear equation system (e.g. C) in the integer arithmetic with representing intermediate results using a floating-point representation (e.g. floating-point-like intermediate representation) which comprises a significand (e.g. val), an exponent (e.g. exp) and a sign (e.g. sgn) to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, and

[0020] subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an (e.g. non-floating-point, and / or e.g. binary) integer representation (e.g. to obtain, the scaling factor for each of the one or more second channels and the offset in the integer representation).

[0021] Subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an integer can also be described as determining an integer presentation of the scaling factor for each of the one or more second channels and the offset from the floating-point representation of the scaling factor for each of the one or more second channels and the offset, (e.g. the same holds true for a corresponding method for decoding)

[0022] Furthermore, an embodiment according to the invention comprises an encoder for encoding a multi-channel signal by block-based predictive encoding, configured to

[0023] apply an inter-channel prediction on a current block of a first channel by

[0024] weighting a corresponding block of each of a one or more second channels using a scaling factor for the respective second channel to obtain a scaled inter-channel predictor from each of the one or more second channels and

[0025] forming a sum over the scaled inter-channel predictor (e.g. predictors; e.g. scaled predictor) of the one or more second channels and an offset so as to obtain a scaled and offset inter-channel predictor,

[0026] determine the scaling factor for each of the one or more second channels and the offset by solving a linear equation system which minimizes a square prediction error when using the inter-channel prediction to predict an already encoded portion of the first channel from a corresponding portion of the one or more second channels, and

[0027] encode a prediction residual for correcting the scaled and offset inter-channel predictor into a data stream,

[0028] wherein the encoder is configured to

[0029] perform the prediction, determination and the encoding (e.g. correction) in an integer arithmetic, and

[0030] solve the linear equation system by

[0031] solving the linear equation system in the integer arithmetic with representing intermediate results using a floating-point representation which comprises a significand, an exponent and a sign to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, and

[0032] subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an (e.g. non-floating-point, and / or e.g. binary) integer representation (e.g. to obtain, the scaling factor for each of the one or more second channels and the offset in the integer representation).

[0033] Subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an integer can also be described as determining an integer representation of the scaling factor for each of the one or more second channels and the offset from the floating-point representation of the scaling factor for each of the one or more second channels and the offset. The same principle applies to a corresponding method for encoding, wherein the intermediate floating-point representation is used to ensure precise computation before conversion to the integer representation for storage or transmission.

[0034] By separating magnitude and scale through the significand and exponent of the floatingpoint representation, embodiments can maintain controlled dynamic ranges for all intermediate values. This enables the use of low-precision integer data types, such as 32-bit integers (e.g. or 8-bit; e.g. or 16-bit), without a significant loss of accuracy. The exponent component can compensate for variations in magnitude, while the significand can guarantee good arithmetic. As a result, all prediction, determination, and correction computations can be efficiently executed in integer arithmetic, reducing computational costs while maintaining high coding quality.

[0035] Furthermore, the structured intermediate representation supports a wide range of bit depths and large numerical values in the matrix and vector elements of the linear equation system. The exponent component allows flexible scaling of these values, so that the same algorithm can accommodate both low and high bit-depth signals without modification. This separation of magnitude and scaling preserves numerical stability, ensuring consistent decoding performance and reliable coding quality across diverse input formats and quantization resolutions.

[0036] The use of the floating-point representation enables a practical compromise between accuracy and efficiency. It combines the deterministic and reproducible nature of integer arithmetic with the flexibility and dynamic range advantages of floating-point representations. Consequently, embodiments achieve an improved compromise between coding quality, efficient computation, and robust coding performance. In the following, specific encoders or decoders may not be explicitly mentioned. However, it is to be understood that features and functionalities described with respect to certain embodiments relating to a decoder are correspondingly applicable to the respective encoder and vice versa.

[0037] According to an embodiment of the invention, the decoder is configured to, in solving the linear equation system in the integer arithmetic,

[0038] compute, by a conversion from the integer representation to the floating-point representation, the floating-point representation of the already decoded portion of the first channel and the corresponding portion of the one or more second channels or values derived from the already decoded portion of the first channel and the corresponding portion of the one or more second channels,

[0039] so that the significand is filled, from highest to lowest digit (e.g. bit position),

[0040] a most significant non-zero bit of the integer representation and n-1 bits of the integer representation being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation is at the nthdigit (e.g. starting with one at the LSB position and ascending towards MSB) or higher,

[0041] a most significant non-zero bit of the integer representation and all bits of the integer representation being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation is at a mthdigit with m < n, followed by n-m zeros,

[0042] wherein n is a non-negative integer (e.g. being FPANumDigitsVal, indicative of the number of significant bits in the significand).

[0043] By defining the conversion from the integer representation to the floating-point representation in which the significand is filled from the most significant non-zero bit downward, embodiments can be able to maintain a maximized numerical precision in the significand without unnecessary loss of significant information. This can, for example, ensures that the representation efficiently captures the dynamic range of the integer input.

[0044] According to an embodiment of the invention, the decoder is configured to, in solving the linear equation system in the integer arithmetic,

[0045] compute, by a conversion from the integer representation to the floating-point representation, the floating-point representation of the already decoded portion of the first channel and the corresponding portion of the one or more second channels or values derived from the already decoded portion of the first channel and the corresponding portion of the one or more second channels,

[0046] so that the significand is filled, from highest to lowest significance,

[0047] a most significant non-zero bit of the integer representation and n-1 bits of the integer representation being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation is at the nthdigit (starting with one at the LSB position and ascending towards MSB) or higher, with the exponent being set to equal a number of digits which the most significant non-zero bit of the integer representation is above the nthdigit,

[0048] a most significant non-zero bit of the integer representation and all bits of the integer representation being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation is at a mthdigit with m < n, followed by n-m zeros, with the exponent being set to equal a number of digits which the most significant non-zero bit of the integer representation is below the nthdigit times minus one,

[0049] wherein n is a non-negative integer (e.g. being FPANumDigitsVal, indicative of the number of significant bits in the significand; e.g. equal to y-2, wherein y is the bit depth of the Integer-representation of the significand).

[0050] By configuring the conversion so that the exponent value reflects the positional offset of the most significant non-zero bit relative to a predefined reference position (e.g., the nthdigit), embodiments can be able to normalize input values of differing magnitudes into a uniform representational range. This allows subsequent arithmetic operations to be performed on well-scaled quantities, thereby enhancing numerical stability.

[0051] According to an embodiment of the invention, the decoder is configured to

[0052] perform the conversion from the floating-point representation to the (e.g. non-floating-point, and / or e.g. binary) integer representation by

[0053] if the exponent is zero, setting the integer representation to be equal to the significand,

[0054] if the exponent greater than zero (e.g. if the exponent greater than zero), shifting the significand a number of bits to the left equaling the exponent to obtain the integer representation, if the exponent less than zero, shifting the significand, or the significand plus a rounding offset, a number of bits to the right equaling an absolute of the exponent to obtain the integer representation.

[0055] According to an embodiment of the invention, the decoder is configured to

[0056] in the performing the conversion from the floating-point representation to the (e.g. non-floating-point, and / or e.g. binary) integer representation,

[0057] subject the integer representation to an additive inversion if the sign of the floatingpoint representation is negative.

[0058] According to an embodiment of the invention, the decoder is configured to, in solving the linear equation system in the integer arithmetic,

[0059] compute, by a conversion from the integer representation to the floating-point representation, the floating-point representation of the already decoded portion of the first channel and the corresponding portion of the one or more second channels or values derived from the already decoded portion (e.g. values derived the already decoded portion) of the first channel and the corresponding portion of the one or more second channels, by x.val = 0, x.exp = 0, and x.sgn = 0

[0060] if (a!= 0) {

[0061] if(a<0 ) {

[0062] absVal = -a

[0063] x.sgn = 1

[0064] } else

[0065] absVal = a

[0066] x.exp = BitWidth( absVal ) - FPANumDigitsVal

[0067] if( x.exp < 0 )

[0068] x.val = absVal « ( -x.exp )

[0069] else

[0070] x.val = absVal » x.exp

[0071] }

[0072] wherein a is the integer representation, x.val is the significand, x.exp is the exponent and x.sgn is the sign of the floating-point representation, BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, and FPANumDigitsVal is an integer parameter (e.g. indicative of the bit depth of the signifcand; e.g. equal to y-2, wherein y is the bit depth of the Integer-representation of the significand). According to an embodiment of the invention, the decoder is configured to perform the conversion from the floating-point representation to the (e.g. non-floating-point, and / or e.g. binary) integer representation by

[0073] a = 0

[0074] if (a!= 0) {

[0075] if( x.exp >= 0 )

[0076] a = x.val « x.exp

[0077] else

[0078] a = ( x.val + ( 1 « ( -x.exp - 1 ) ) ) » ( -x.exp )

[0079] if( x.sgn )

[0080] a = -a

[0081] }

[0082] wherein a is the integer representation, x.val is the significand, x.exp is the exponent and x.sgn is the sign of the floating-point representation.

[0083] According to an embodiment of the invention, the decoder is configured to

[0084] in the solving the linear equation system in the integer arithmetic with representing intermediate results using the floating-point representation to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, perform one or more of a bit shift to the left a bit shift to the right, a negation, an addition, a subtraction, a multiplication, a multiplicative inversion(e.g. wherein FPANumDigitsVal is an integer parameter (e.g. equal to y-2, wherein y is the bit depth of the Integer-representation of the significand)) and a division (e.g. wherein FPANumDigitsVal is an integer parameter (e.g. equal to y-2, wherein y is the bit depth of the Integer-representation of the significand)).

[0085] By performing arithmetic operations such as bit shifts, negation, addition, subtraction, multiplication, multiplicative inversion, and division on intermediate results represented in a floating-point-like format, embodiments are able to maintain high numerical precision and efficiently handle values of widely differing magnitudes. This ensures stable and accurate computation of the scaling factors and offsets.

[0086] According to an embodiment of the invention, the decoder is configured to

[0087] in the solving the linear equation system in the integer arithmetic with representing intermediate results using the floating-point representation to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, perform divisions by table look-up. By performing divisions via table look-up on intermediate results represented in a floating-point-like format, embodiments are able to avoid direct division operations, which are computationally expensive and potentially non-deterministic in fixed-point or low-power hardware environments. This allows the decoder to efficiently compute the scaling factors and offsets in the linear equation system while maintaining numerical precision and deterministic, bit-exact behavior.

[0088] According to an embodiment of the invention, the decoder is configured to, in the solving the linear equation system in the integer arithmetic with representing intermediate results using the floating-point representation to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, solve the linear equation system using the Cramer’s rule.

[0089] By solving the linear equation system using Cramer’s rule on intermediate results represented in the floating-point representation, e.g., in a floating-point-like format, embodiments can be able to compute the scaling factors and offsets in a deterministic and precise manner while retaining the benefits of integer arithmetic. This approach provides stable and accurate solutions for the linear equation system, ensuring bit-exact reproducibility across different hardware platforms and maintaining high coding quality.

[0090] Cramer’s rule is particularly well-suited for this approach because it allows each variable of the linear equation system to be computed independently using determinants, which can be efficiently implemented according to embodiments. This independence can reduce the accumulation of rounding errors, ensures exact and reproducible results.

[0091] According to an embodiment of the invention, the decoder is configured to

[0092] set-up the linear equation system based on the already decoded portion of the first channel and the corresponding portion of the one or more second channels in the integer arithmetic with representing intermediate results using the integer representation (e.g. might be an integer representation using, or with spending, more bits than used for representing the sample values and / or the scaling factor(s) and the offset),

[0093] transfer the linear equation system to the floating-point representation, and

[0094] perform the solving the linear equation system in the integer arithmetic with representing intermediate results using the floating-point representation. By setting up the linear equation system in integer arithmetic with extended bit-width representations, transferring it to the floating-point-representation for intermediate results, and then solving it in integer arithmetic using the floating-point representation, embodiments are able to maintain exact and reproducible computations while efficiently handling a wide dynamic range. This approach ensures that the scaling factors and offsets are determined with high numerical precision and combines the deterministic benefits of integer arithmetic with the flexibility of floating-point scaling.

[0095] According to an embodiment of the invention, the decoder is configured to compute a floating-point representation of the already decoded portion of the first channel and the corresponding portion of the one or more second channels, set-up the linear equation system based on the floating-point representation of the already decoded portion of the first channel and the corresponding portion of the one or more second channels (e.g. in the integer arithmetic) with representing intermediate results using the floating-point representation, and perform the solving the linear equation system in the integer arithmetic with representing intermediate results using the floating-point representation.

[0096] According to an embodiment of the invention, the corresponding block is co-located, or offset by a predetermined amount signaled in the data stream relative, to the current block and the corresponding portion to the already decoded portion temporally and / or spatially.

[0097] By using a corresponding block that is co-located or offset by a predetermined amount signaled in the data stream relative to the current block, and a corresponding portion aligned temporally and / or spatially with the already decoded portion, embodiments are able to flexibly exploit inter-channel correlations.

[0098] According to an embodiment of the invention, the decoder is configured to, in subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to the (e.g. non-floating-point, and / or e.g. binary) integer representation, derive the integer representation by subject (e.g. subjecting) the significand to a bit shift by an amount of bits set equaling an absolute value of the exponent.

[0099] By deriving the integer representation of the scaling factors and the offset through bitshifting the significand by an amount equal to the absolute value of the exponent, embodiments are able to efficiently convert floating-point representation results into integer values. According to an embodiment of the invention, the decoder is configured to, in applying the inter-channel prediction on the current block of a first channel, subject the sum over the scaled predictor of the one or more second channels and the offset to (e.g. a) bit shift to the right by s bits so as to obtain a scaled and offset inter-channel predictor, wherein s is a constant shift parameter which determines a numerical accuracy of the inter-channel prediction.

[0100] Subjecting the sum over the scaled predictors of the one or more second channels and the offset to a right bit shift by a constant parameter s, can enable embodiments to control the numerical accuracy of the inter-channel prediction. This ensures that the scaled and offset inter-channel predictor is properly obtained and a necessary precision might be maintained.

[0101] An embodiment according to the invention comprises a method for decoding a multichannel signal by block-based predictive decoding, comprising applying an inter-channel prediction on a current block of a first channel by weighting a corresponding block of each of a one or more second channels using a scaling factor for the respective second channel to obtain a scaled inter-channel predictor from each of the one or more second channels and forming a sum over the scaled predictor of the one or more second channels and an offset so as to obtain a scaled and offset inter-channel predictor, determining the scaling factor for each of the one or more second channels and the offset by solving a linear equation system which minimizes a square prediction error when using the inter-channel prediction to predict an already decoded portion of the first channel from a corresponding portion of the one or more second channels, and correcting the scaled and offset interchannel predictor using a prediction residual decoded from a data stream, wherein the method comprises performing the prediction, determination and the correction in an integer arithmetic, and solve the linear equation system by solving the linear equation system in the integer arithmetic with representing intermediate results using a floating-point representation which comprises a significand, an exponent and a sign to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, and subjecting the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an (e.g. non-floating point, and / or e.g. binary) integer representation.

[0102] An embodiment according to the invention comprises a method for encoding a multichannel signal by block-based predictive encoding, comprising applying an inter-channel prediction on a current block of a first channel by weighting a corresponding block of each of a one or more second channels using a scaling factor for the respective second channel to obtain a scaled inter-channel predictor from each of the one or more second channels and forming a sum over the scaled predictor of the one or more second channels and an offset so as to obtain a scaled and offset inter-channel predictor, determining the scaling factor for each of the one or more second channels and the offset by solving a linear equation system which minimizes a square prediction error when using the inter-channel prediction to predict an already encoded portion of the first channel from a corresponding portion of the one or more second channels, and encoding a prediction residual for correcting the scaled and offset inter-channel predictor into a data stream, wherein the method comprises performing the prediction, determination and the correction in an integer arithmetic, and solve the linear equation system by solving the linear equation system in the integer arithmetic with representing intermediate results using a floating-point representation which comprises a significand, an exponent and a sign to obtain the scaling factor for each of the one or more second channels and the offset in the floating-point representation, and determining an integer presentation of the scaling factor for each of the one or more second channels and the offset from the floating-point representation of the scaling factor for each of the one or more second channels and the offset.

[0103] Methods, computer programs, and data streams are subject to the same considerations as those described with respect to an encoder or decoder. Furthermore, for the sake of brevity and clarity, certain features, functionalities, or details may be described in the context of a specific aspect, or in relation to an encoder rather than a decoder, or vice versa, or in the context of a method. It should therefore be emphasized that any feature, functionality, or detail disclosed in one embodiment can be incorporated into, combined with, or applied to any other embodiment of the invention, either individually or in any combination.

[0104] Brief Description of the Drawings

[0105] The drawings are not necessarily to scale, emphasis and stature is really 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:

[0106] Fig. 1 shows a schematic view of a decoder according to embodiments of the invention;

[0107] Fig. 2a and 2b show different ways of obtaining a linear equation system according to embodiments; Fig. 3 shows a schematic view of a conversion from an integer representation to a floatingpoint representation back to the integer representation according to embodiments of the invention;

[0108] Fig. 4 shows a schematic view of an encoder according to embodiments of the invention;

[0109] Fig. 5 shows an exemplarily codec or framework into which embodiments of the invention may be incorporated into;

[0110] Fig. 6 shows a schematic view of a method for decoding a multichannel signal according to embodiments of the invention; and

[0111] Fig. 7 shows a schematic view of a method for encoding the multichannel signal according to embodiments.

[0112] Detailed Description of the Embodiments

[0113] Equal or equivalent amendments or elements of equal or equivalent functionality are denoted in the following description by equal or equivalent reference numerals even if occurring in different figures.

[0114] In the following description, a plurality of details is set forth to provide a more thorough explanation of embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without the specific details. In other instances, 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 hereinafter may be combined with each other, unless specifically noted otherwise.

[0115] The following detailed description of the embodiments starts with a brief description of a decoder 12 according to embodiments with respect to Fig. 1 and a brief description of an encoder 10 according to embodiments with respect to Fig. 4. Afterwards, exemplary problems that are solved by certain embodiments of the invention are discussed in detail with respect to embodiments of the invention, already explaining specific details of embodiments. Subsequently, in the section entitled “Description of the Embodiments of the Invention”, specific features and functionalities of various embodiments are further discussed in detail, followed by a description of an exemplary coded environment into which the embodiments of the invention may be implemented.

[0116] Fig. 1 shows a schematic view of an exemplary decoder 12 according to embodiments of the invention The decoder 12 is configured to decode a multi-channel signal 14 from a data stream 16. Decoding is performed by block-based predictive decoding, wherein the decoder 12, for example, for each block in each channel, decodes a residual 117, generates a predictor 112 using an inter-channel prediction, and corrects 115 the predictor 112 using the residual 117 to reconstruct a current block 101.

[0117] Fig. 1 explicitly illustrates the decoder 12 decoding a current block 101 of a first channel 105 of the multi-channel signal 14. For decoding the current block 101, the decoder 12 determines a linear equation system, LES, 113 that minimizes a squared prediction error when using inter-channel prediction to predict an already decoded portion 102 of the first channel 105 from a corresponding portion 103 of one or more second channels 106. The already decoded portion 102 and the corresponding portion 103 may, for example, immediately precede the current block 101 or may be offset by a specific amount determined by a parameter that may be decoded by the decoder 12 from the data stream 16. The second channel 106 may also represent a plurality of second channels 106, wherein the corresponding portion 103 is present in each of the second channels 106 of the multichannel signal 14.

[0118] The decoder 12 further comprises an LES solver 114 configured to solve the linear equation system 113. When solving the linear equation system 113, the LES solver 114 employs a floating-point representation 120 for intermediate results. The floating-point representation 120 comprises a significand 121, an exponent 122, and a sign 123. Through solving the linear equation system 113, the LES solver 114 obtains an offset 111' and a scaling factor 109' for each of the second channels 106, both expressed in the floating-point representation 120. The LES solver 114 is thus configured to obtain one scaling factor 109' for each of the one or more second channels 106. Accordingly, in the example shown, where the decoder 12 utilizes a single second channel 106, only one scaling factor 109' is obtained. In other examples, where the decoder 12 utilizes multiple second channels 106, the LES solver 114 correspondingly obtains multiple scaling factors 109'. The decoder 12 is further configured to subject the scaling factor 109' and the offset 111' to a conversion 130 in order to obtain an integer representation of the offset, now denoted 111, and of the scaling factor, now denoted 109. The conversion 130 may, for example, correspond to the conversion 130 illustrated and described with reference to Fig. 3.

[0119] The decoder 12 of Fig. 1 may also be described as performing substantially all described decoding operations (e.g. other non-described decoding operations such as a post processing may still be done in floating point arithmetic) using integer arithmetic, except for the step of solving the linear equation system 113, which is performed using the floatingpoint representation 120 in accordance with embodiments of the invention. By confining the use of floating-point operations to the solution of the linear equation system 113, a high level of numerical precision during a computation step can be maintained at low computational cost.

[0120] For performing the predictive coding, the decoder 12 comprises an inter-channel predictor unit 136 configured to, for each second channel 106, perform a weighting 107 of a corresponding block 104 of each of the second channels 106 using the scaling factor 109, in the integer representation, that is associated with the respective second channel 106, in order to obtain a scaled inter-channel predictor 108 from each of the second channels 106. Subsequently, the inter-channel predictor unit 136 is configured to form a sum 110 of all scaled predictors 108 of the second channels 106 together with the offset 111, thereby obtaining a scaled and offset inter-channel predictor 112.

[0121] The current block 101 (e.g. or rather a signal thereof) can now be obtained by the decoder 12 through a correction 115 of the scaled and offset inter-channel predictor 112 with the residual 117 decoded, using a residual decoder 116, from the data stream 16.

[0122] The decoder 12 may, for example, be further extended by incorporating any of the features and functionalities described herein, either individually or in any combination.

[0123] Fig. 4 depicts a schematic view of an encoder 10 according to embodiments of the invention. The encoder 10 is configured to perform block-based predictive encoding of a multi-channel signal 14 into a data stream 16. In Fig. 4, the encoder 10 is explicitly illustrated while encoding a current block 101 of a first channel 105 of the multi-channel signal 14. The multichannel signal 14 further comprises a second channel 106, or one or more second channels 106, which are temporally or spatially related to the current block 101 and comprise a corresponding block 104 with which the current block 101 may be predictively encoded.

[0124] The encoder 10 obtains a linear equation system 113 based on a prediction of an already encoded portion 102’ of the first channel 105 from a corresponding portion 103 of one or more second channels 106. The linear equation system 113 is determined so as to minimize a squared prediction error when using the inter-channel prediction to predict the already encoded portion 102* of the first channel 105 from the corresponding portion 103 of the second channels 106. The inter-channel prediction applied in this process corresponds to the inter-channel prediction that is subsequently used to encode the current block 101.

[0125] The linear equation system 113 is solved by an LES solver 114 using a floating-point representation 120 for intermediate results. In this process, the LES solver 114 obtains an offset 111' in floating-point representation 120, as well as, for each of the one or more second channels 106 (e.g. or more precisely for the corresponding portions 103 of the second channels 106) a scaling factor 109', also in floating-point representation 120.

[0126] The encoder 10 is further configured to subject the offset 111' and the scaling factor 109', both in floating-point representation 120, to a conversion 130 in order to obtain an integer representation of the offset, now denoted 111, and an integer representation of the scaling factor, now denoted 109.

[0127] To perform the block-based predictive coding, the encoder 10 further comprises an interchannel predictor unit 136, which may be the same inter-channel predictor unit 136 of the decoder 12 as described with respect to Fig. 1. The inter-channel predictor unit 136 is configured to weight 107 the corresponding block 104 of each of the one or more second channels 106 using the respective scaling factor 109 in the integer representation, thereby obtaining a scaled inter-channel predictor 108 for each second channel 106. The weighting 107 is performed independently for each of the second channels 106. After obtaining the scaled inter-channel predictors 108 for all second channels 106, the inter-channel predictor unit 136 is configured to form 110 a sum of the scaled inter-channel predictors 108 together with the offset 111 in integer representation, thereby obtaining a scaled and offset interchannel predictor 112.

[0128] The encoder 10 is further configured to encode a residual 117 using a residual encoder 441 into the data stream 16. The residual 117 may be used by a decoder, such as decoder 12, to correct the scaled and offset inter-channel predictor 112, thereby reconstructing the current block 101.

[0129] In the following, features and functionalities of the encoder 10 and decoder 12 are described. Such features and functionalities may be introduced into either the encoder 10 or the decoder 12 individually, or in combination. Although certain embodiments are described with reference to only an encoder 10 or a decoder 12, the features and functionalities of these embodiments may likewise be implemented in the complementary component. Similarly, features and functionalities described with respect to a method may be incorporated, individually or in combination, into an apparatus according to the embodiments, and vice versa. Reference signs are used herein illustratively and may represent alternative terminology for the same elements.

[0130] Following, a numbering scheme is introduced to facilitate a structured description of embodiments of the invention. It should be noted, however, that the numbered sections do not necessarily correspond to separate embodiments. Features and functionalities described in different sections may be combined in any technically meaningful manner, unless explicitly stated otherwise.

[0131] In general, the use of an apostrophe (’) after a reference sign may indicate that the object referred to by the reference sign is present in the floating-point representation 120. However, the reference signs XX’ are merely auxiliary and may be replaced with the corresponding reference signs XX.

[0132] The already decoded portion 102 and the already encoded portion 102* refer to the same object, albeit in different contexts; therefore, distinct reference signs are used. Depending on whether the component is a decoder or an encoder, the respective portion may be interchanged with the other.

[0133] The below examples describe concepts for solving small equation systems (e.g. the LES 113), for example, with large values for cross-channel prediction with respect to embodiments of the invention.

[0134] 1. Exemplary problems solved by embodiments of the invention An exemplary application space of embodiments of the invention is the coding of multichannel signals (e.g. 14) with cross-channel prediction (e.g. inter-channel prediction), where the prediction parameters are derived based on already coded and reconstructed samples (e.g. based on the already decoded portion 102 (e.g. or the already encoded portion 102*) and the corresponding portion 103).

[0135] 1.1. Cross-channel prediction with derived parameters

[0136] Multi-channels signals (e.g. 14), as for example medical signals (like electroencephalography (EEG), electromyography (EMG), or electrocardiography (ECG) signals), seismic signals, multi-channel audio signals, multi-spectral image signals, or conventional color image signals, often show a large degree of inter-channel correlation between different channels (e.g. first and second channels 105 and 106) of the multichannel signal (e.g. 14). One approach to utilize the inter-channel correlations for an efficient coding of the multi-channel signals (e.g. 14) is linear cross-channel prediction as in embodiments of the invention. In the following description, the concept is described for multi-channel signals 14 with one-dimensional data, as for example medical signals; but the same concept can be applied to two-dimensional data such as image signals in a straightforward way.

[0137] Let %[c][ / c] denote the original samples of the signal 14, where c denotes the channel index and k denotes the sample location. Furthermore, let x'[c][ / c] denote already coded and reconstructed samples (e.g. the already coded portion 102 (e.g. or the already encoded portion 102*) of a channel k is part of x’[c][k]) of the signal and let x[c][ / c] denote prediction samples (e.g. x[c][ / c] comprises the current block 101).

[0138] The following describes Cross-channel prediction with a single reference channel.

[0139] In cross-channel prediction with a single reference channel (e.g. single second channel 106), the prediction signal for a block 101 of the current channel 105 with channel index c can be derived from the co-located samples from a reference channel 106 with channel index r, with r #= c. The cross-channel prediction mode can be chosen on a block basis, where the decision is transmitted inside the bitstream (e.g. data stream 16). Additionally, the channel index r of the reference channel 106 has to be transmitted in the bitstream 16, unless it can be inferred at the decoder side (for example when only one reference channel is available, or it can be deduced from high-level syntax elements that a certain channel is always used as reference channel for the current channel). The current block 101 can be characterized by a block size N, which denotes the number of samples inside the block 101 of the current channel 105 with channel index c, and the start sample location k0. The crosschannel prediction mode for a block (k0, N) 101 can only be selected if all samples x[r][ / c] with k = k0...k0+ N - 1 of the reference channel 106 have already been coded and thus their reconstructed values x'[r][ / c] are available. The actual coding of the reference channel 106 index r may depend on what reference channels 106 are available. For each sample location k, with k = k0...k0+ N - 1, the prediction samples can, for example, derived according to

[0140]

[0141] Where, according to embodiments, s is a constant shift parameter, which determines the numerical accuracy of the prediction. The operators « and » represent arithmetic bit shifts to the left and right, respectively, in two-complements integer arithmetic. The term ((1 « s) » 1) represents a round offset (e.g. 327), which may be omitted.

[0142] Note that inter-channel prediction according to embodiments might be modified in a way that the inter-channel prediction is controllable to the extent that predicted block 101 and reference block 104 may not be completely co-located, but that an offset may allow for locating the reference block 104 relative to the current / predicted block 101, wherein this offset might be signaled in the data stream 16.

[0143] The integer parameters a and b (where a is a constant offset 111 and b is a scaling factor 109) represent the parameters of the cross-channel prediction (e.g. inter-channel prediction). Their optimal values depend on the cross-correlation between the samples of the current channel 105 and the reference channel 106 and the statistical properties of the two channels. Conceptually, the parameters 109, 111 could be derived at the encoder 10 and transmitted to the decoder 12, but this would require a non-negligible number of bits and would thus reduce the effectiveness of the cross-channel prediction. Due to this reason the values of the parameters a (111) and b (109) are typically derived based on samples of already coded blocks (e.g. 102; e.g. 102’) of the current channel (105) and the reference channel (106).

[0144] For simplifying the description, the above prediction can, for example, be reformulated in floating point (e.g. floating-point) arithmetic, when the effects of rounding are neglected, x[c][ / c] = fb*x'[r][fc] + fa.

[0145] Depending on the shift parameter s, the parameters a (111) and b (109) can be derived according to a = [fa* 2s],

[0146] b = L / i, * 2s],

[0147] where [...] represents rounding to the next integer.

[0148] For deriving parameters faand fb, and thus also a (111) and b (109), for the current block (101), it is assumed that the statistical properties of the preceding sample are very similar to the statistical properties of the preceding M samples of the considered channels (105 and 106). Hence, the parameters faand fbcan be determined by minimizing the square prediction error for the already coded M preceding samples

[0149]

[0150] by using the reconstructed samples (e.g. 102; e.g. 102’) of the current channel (105) as target signal. By setting the partial derivatives with respect to faand fbequal to zero, one can obtain the following linear equation system (e.g. an exemplary LES 113):

[0151]

[0152] where C is a symmetric 2x2 matrix and v is a column vector of size 2. The elements are given as follows, where the first subscript for the matrix denotes the column index and the second subscript denotes the row index:

[0153]

[0154] Note, again, that inter-channel prediction might be modified in a way that the inter-channel prediction is controllable to the extent that predicted block (e.g. current block 101 and / or already coded portion 102 (e.g. or the already encoded portion 102*)) and reference block (e.g. corresponding block 104 and / or corresponding portion 103) may not be completely colocated, but that an offset may allow for locating the reference block relative to the current / predicted block, wherein this offset might be signaled in the data stream 16. This offset would also control the relative positions of the portions of the two channels used for the setting-up of the equation system. The note is also transferable onto the case of having more than one reference channel 106 although not explicitly stated there, and reference is additionally made to the description of a possible codec environment described below for further possible details.

[0155] The linear equation system 113 can also directly be written for the integer parameters a

[0156]

[0157] In summary, in the cross-channel prediction mode, the prediction signal for a block 101 can be derived by the following ordered steps:

[0158] - The matrix C and the vector v (e.g. constituting the LES 113) are, for example, determined based on the M preceeding reconstructed samples (e.g. 102 / 102* and 103) of the current channel 105 and the reference channel 106;

[0159] - The prediction parameters a (11and b are determined by solving the linear equation system;

[0160] - The prediction signal for the current block is generated by applying the crosschannel prediction with the parameters a and b.

[0161] Note that the prediction can be applied at both the encoder 10 and decoder 12, since only preceding reconstructed samples are used for generating the prediction signal.

[0162] Based on the prediction signal (e.g. scaled and offset inter-channel predictor 112), the difference (or residual) signal d[c][ / c] (112), with k = 0... N - 1, for the current block 101 is calculated as the difference of the original signal (e.g. of the current block 101) and the prediction signal 117:

[0163] d [c] [Zc] = x [c] [k + k0] — x [c] [k + / c0]

[0164] Then, according to embodiments, the prediction signal can be coded either in a lossless way (i.e., using some form of entropy coding or a combination of prediction and entropy coding) or, in most cases, using lossy coding. For lossy coding, any of the following coding methods can be used:

[0165] Direct quantization:

[0166] The samples of the residual signal 117 are quantized and the resulting quantization indexes are transmitted using entropy coding. At the decoder side, the quantization indexes are read from the bitstream 16 by entropy decoding and a reconstructed version d'[c][ / c], with k = 0... N - 1, of the residual signal 117 is obtained by dequantizing the quantization indexes. Also at the encoder side, the same reconstructed version d'[c][ / c] is obtained by dequantizing the quantization indexes. - Transform coding:

[0167] First the residual signal 117 for the current block 101 is transformed (typically by applying an orthogonal transform), the resulting transform coefficients are quantized, and the then obtained quantization indexes are transmitted using entropy coding. At the decoder side, the quantization indexes are read from the bitstream 16 using entropy decoding and a reconstructed version d'[c][ / c], with k = 0... N - 1, of the residual signal 117 is obtained by dequantizing the quantization indexes and applying the inverse transform. Also at the encoder side, the same reconstructed version d'[c][ / c] is obtained by dequantization followed by the inverse transform.

[0168] Predictive quantization:

[0169] The samples of the difference signal are successively coded, where each sample of the residual signal 117 is first predicted using already coded samples of the residual signal 117 (the prediction parameter may be additionally signaled inside the bitstream 16), then the difference of the original residual sample 117 and the predicted residual sample is quantized and the resulting quantization index is entropy coded. The reconstructed residual sample d'[c][ / c] is obtained by adding the dequantized quantization index to the prediction for the residual samples. The reconstructed residual sample can then also be used for prediction the successive residual samples. At the decoder side, the reconstructed version d'[c][ / c], with k = 0... N - 1, of the residual signal 117 is obtained by processing the samples successively, where a (e.g. the) current residual sample is first predicted, then a quantization index is read from the bitstream by entropy decoding, and the reconstructed residual samples d'[c][ / c] is obtained by adding the dequantized quantization index to the prediction for the residual samples.

[0170] Finally, at both encoder 10 and decoder 12, the reconstructed signal for the current block 101 can be obtained by adding (e.g. correcting 115) the reconstructed residual signal 117 to the cross-channel prediction signal 112:

[0171] x'[c][ / c] = x[c] [Zc] + d'[c][ / c — k0] for k = k0... k0+ N — 1.

[0172] The following describes Cross-channel prediction with multiple reference channels.

[0173] The cross-channel prediction according to embodiments can also be extended in a way that multiple reference channels 106 are used. In the following, the case with two reference channels 106 is described in more detail. But it can be extended to more than two reference channels 106 in a straightforward manner.

[0174] Let r0and r1, with r0≠ c, r1≠ c and r1≠ r0, denote the channel indices of the two reference channels 106 that are used for the cross-channel prediction of the current block 101. Both reference channel indexes r0

[0175]

[0176] may be transmitted inside the bitstream 16, unless one or both channel indexes can be inferred at the decoder side (for example when only two reference channels 106 are available or it can be deduced from high-level syntax elements that a certain channel or two certain channels are always used as reference channels 106 for the current channel 105). For a sample location k, with k = k0...k0+ N - 1, the prediction samples can be derived according to

[0177]

[0178] where the two integer scaling factors (109) b0and b1and the integer offset a (111) represent the parameters of the cross-channel prediction. Similar as in the one-channel case, the prediction can be reformulated in floating-point arithmetic,

[0179] x̂[c][k] = fb0* x'[r0][k] + fb1* x'[r1][k] + fa,

[0180] with

[0181] a = ⌊fa* 2s⌋,

[0182] b0= ⌊fb0* 2s⌋,

[0183] b1= ⌊fb1* 2s⌋,

[0184] And the parameters fa, fb0and fblcan be determined by minimizing the square prediction error for the already coded M proceeding samples

[0185]

[0186] by using the reconstructed samples (e.g. the already decoded portion 102 (e.g. or the already encoded portion 102*)) of the current channel 105 as target signal. This results in the linear equation system 113:

[0187]

[0188] where C is a symmetric 3x3 matrix and v is a column vector of size 3. The elements of C and v are given by:

[0189]

[0190] Cio=COi,

[0191]

[0192] The linear equation system 113 can also directly be written for the integer parameters a

[0193]

[0194] In summary, in the cross-channel prediction mode, the prediction signal for a block 101 can be derived by the following ordered steps:

[0195] - The matrix C and the vector v (e.g. part of the LES 113) can be determined based on the M proceeding reconstructed samples (e.g. in 102 / 102* and 103) of the current channel 105 and the reference channel 106;

[0196] - The prediction parameters a (111) and b (109) can be determined by solving the linear equation system 113;

[0197] The prediction signal 112 for the current block 101 can be generated by applying the cross-channel prediction with the parameters a (111) and b (109).

[0198] In exactly the same way as for the one-channel case described above, the difference (e.g. the residual 117) between the original signal for the block 101 and the derived cross-channel prediction signal 112 can be transmitted either using lossless coding or, in most cases, lossy coding. As lossy coding one could use direct quantization, transform coding, or predicted quantization as described in more detail above.

[0199] Finally, at both encoder 10 and decoder 12, the reconstructed signal for the current block 101 is obtained by adding the reconstructed residual signal 117 to the cross-channel prediction signal 112:

[0200] x'[c][ / c] = x[c] [Zc] + d'[c][ / c — k0] for k = k0... k0+ N — 1. It should be again noted that according to embodiments, the cross-channel prediction can be extended to more than two reference channels 106 in a straightforward way. With K reference channels 106, one has to determined K + 1 prediction parameters 109 (K scales bt, with i = 0... K — 1, and 1 offset a) by determining the corresponding (K + 1) x (K + 1) matrix C and the vector v with (K + 1) elements and solving the resulting linear equation 113 system with (K + 1) equations. It is also possible for embodiments to force the offset 111 parameter to zero, i.e., a = 0, in which case only K scales 109 have to be determined.

[0201] 1.2. Solving linear equation systems in integer arithmetic

[0202] One difficulty in applying the cross-channel prediction described above is to solve the linear equation system 113 for the integer parameters a (111) and (109).

[0203] The description proceeds with a discussion of conventional approaches to the above described solving of the LES 113, specifically Solving linear equation systems in floatingpoint arithmetic and Solving linear equation systems in integer arithmetic. Afterwards, Solving linear equation systems in integer arithmetic without divisions is discussed.

[0204] Solving linear equation systems 113 in floating-point arithmetic.

[0205] Conventionally, the linear equation system 113

[0206]

[0207] with K being the number of reference channels 106 used, would be solved in floating-point arithmetic using any known method, as for example, Gaussian elimination, LU decomposition, LDL decomposition, Cramer’s rule (via determinants). Then, given the floating-point solution for faand fbi, the integer parameters a (111) and bt(109) could be obtained by scaling and rounding:

[0208] a = fa* 2s],

[0209] bi= ⌊fbi* 2s⌋, for i = 0...K - 1

[0210] where [...] represents rounding to the next integer. Alternatively, the modified equation systems

[0211]

[0212] could be solved in floating-point arithmetic, where the solutions should be denoted by a' (e.g. may relate to 111') and b- (e.g. may relate to 109’). Then the integer parameters a (111) and bi (109) could be obtained by rounding to the nearest integer:

[0213] a = [a'],

[0214]

[0215] Since, in general, blocks 101 that are predicted using cross-channel prediction can be used for prediction of future blocks, any deviation between the encoder 10 and decoder 12 reconstruction can accumulate and eventually result in very strong artifacts in the decoded signal. This problem is even more drastic when the codec does not only include crosschannel prediction, but additionally enables predictions between different blocks in the same channel. In this scenario, the reconstruction signal of a cross-channel predicted block can impact the reconstruction of all future blocks. Hence, in order to avoid strong artifacts in a decoded signal, it has to be guaranteed that the cross-channel prediction signal is the same in all encoder and decoder implementations. And that includes that each implementation has to obtain exactly the same integer solution (parameters a and b^ for the linear equation systems 113 stated above. But since different computing architectures often use different floating-point implementations, it cannot be guaranteed that the integer solution of the linear equation system is the same in all architectures. Furthermore, requiring that all implementations of encoders and decoders use the same floating-point arithmetic would put on additional burden on implementations. And additionally, floating-point operations are comparably complex and should be avoided in practical implementations. That’s why floating-point arithmetic is typically avoided in international coding standards. For example, in all ITU-T and ISO / IEC video coding standards since H.264 / M PEG-4 AVC, the entire decoding process is specified in integer arithmetic.

[0216] Solving linear equation systems 113 in integer arithmetic.

[0217] For avoiding floating-point arithmetic, the algorithm used for solving the linear equation system (e.g., Gaussian elimination, LU decomposition, LDL decomposition, Cramer’s rule) can also be specified in integer arithmetic. It should be noted that both the matrix C and the vector v (or v * 2s) contain integer values. Hence, all additions, subtractions, and multiplications can be implemented in integer arithmetic without reducing the precision of the result. Only the required division operations incorporate an implicit rounding. Hence, by replacing the required floating-point divisions with integer divisions (i.e., a division with rounding, typically towards zero), an integer solution of the linear equation system 113 can be obtained. In this context, since the linear equation systems 113 that are obtained for determining the cross-channel prediction parameters (the values

[0218]

[0219] have a small number of unknowns, a solution based on Cramer’s rule (via determinants) is one preferable method, since the divisions are the last operations, and thus the rounding errors do not propagate in an uncontrollable way. However, compared to additions, subtractions, and multiplications, integer divisions are also considered as very complex operations.

[0220] Solving linear equation systems in integer arithmetic without divisions.

[0221] For avoiding complex integer divisions (with b being not equal to zero)

[0222] a / b,

[0223] the divisions are often approximated by a table look-up, a multiplication, and a bit shift. Therefore, a division look-up table is required.

[0224] The following description is restricted to positive values of b (if b is negative, the sign of a can be inverted). For low-complex implementations, the number of table entries is an integer power of 2. Let Log2TabSize be the binary logarithm of the number of table entries; that mean the look-up table has 2Log2TabSizeentries. First, the (positive) denominator b is represented according to

[0225] b « bn* 2be,

[0226] where bnis an integer in the interval [2Log2TabSize; 2Log2TabSize+1- 1] and beis another integer. If beis non-negative, the above representation is exact, only if beis negative it represents an approximation. With the function BitWidth(x) being a function that returns the number of bits needed to store the value of x (e.g. this is the same as in embodiments of the invention),

[0227] Bitwidth

[0228]

[0229] the values bnand becan be derived as specified in the following pseudo-code:

[0230] s = Log2TabSize - BitWidth( b )

[0231] if(s > 0) {

[0232] bn= b « s

[0233] be= —s

[0234] } else {

[0235]

[0236] be= s

[0237] if( bn& (1 « Log2TabSize) ) {

[0238] bn—= (1 « Log2TabSize)

[0239] be+= 1

[0240] }

[0241] },

[0242] where the operators «, », and & represent an arithmetic bit-shift to the left, a bit-shift to the right, and a bit-wise and, respectively. The rounding offset (1 « (-s - 1)) could also be omitted, in which case the additional if-clause is no longer required.

[0243] With V being an integer greater than Log2TabSize, the integer division can be approximated by

[0244]

[0245] 2VNote that bncan only take 2Log2TabSizedifferent values. Hence, the rounded values — can n be pre-calculated in a look-up table DivTab[],

[0246] DivTab[hn] = round (— )•

[0247] \hn /

[0248] Then, the division can be approximated by

[0249]

[0250] where r0= (1 « (V + be- 1)) is a rounding offset that could also be neglected.

[0251] The described approach basically consists of the following steps:

[0252] Representing b as b = y * 2X, where y is a value in the interval [1;2). Note that bnbasically represents y * 2L°g2Tabsize. Then 1 / b is equal to 2-x* (1 / y).

[0253] Sampling the function 1 / y at 2Log2TabSizeequally spaced values in the interval [1;2).

[0254] The accuracy of the division depends mainly on the parameter Log2TabSize, i.e., the number of entries in the look-up table DivTab[], but it is also impacted by the value of V, where larger values of V improve the accuracy, but also increase the bit depth of intermediate values.

[0255] For further increasing the accuracy of the division, it is also possible to approximate the function 1 / y by a simple power series. That means that the range of [1;2) could be split into a small number of intervals and for each interval the coefficients of the power series can be pre-calculated. One possibility of such an approximation is described in the JVET document JVET-AB0174. However, if the solving algorithm for the linear equation system is based on Cramer’s rule, the divisions are only required at the end, and a division table for a rather small number of entries (e.g., 256 entries) provides a sufficiently accurate approximation.

[0256] 1.3. Dynamic range of intermediate results

[0257] Another problem in solving linear equation systems 113 in integer arithmetic is the increased dynamic range of intermediate results. For example, if the signal 14 (or the block 101) has a dynamic range of D bits, the elements (at least some elements) of the matrix C have already a dynamic range of 2D + floor(log2M) bits. When Cramer’s rule is used for solving the linear equation system 113, determinant of matrix C is calculated. When C is a 3x3 matrix (cross-channel prediction with two reference channels), some of the required intermediate results (terms in summation) have already a dynamic range larger than 4D + 2 * floor(log2M) bits. Even if only a small number of preceding samples (e.g., M = 4) is used and the dynamic range of the original signal is only D = 16 bits, the intermediate integer values cannot be represented within 64 bits of accuracy. For M = 4 and D = 24 bits, an integer representations with more than 100 bits would be needed, which are not supported in typical computing architectures.

[0258] 1.4. Summary

[0259] In summary, conventional approaches for solving the LES 113 depict non-optimal solutions for the task. For a wide applicability of multi-channel coding with cross-channel prediction, certain embodiments of the invention can fulfil the following objectives:

[0260] Certain embodiments can be specified in exact integer arithmetic;

[0261] Certain embodiments can avoid division operations;

[0262] Certain embodiments can be implementable with low-precision integers (e.g., 32-bit integers);

[0263] Certain embodiments can be implementable for all common bit depth (i.e., for large elements of the matrix and the vector of the linear equation system 113).

[0264] 2. Description of the embodiments of the Invention

[0265] According to embodiments of the present invention, small linear equation systems 113 with large values can be solved in division-free standard-precision integer arithmetic (e.g. using the floating-point representation 120). For example, the floating-point representation 120 can be implemented in exact integer arithmetic. Therefore, a low-complexity approximation of floating-point numbers is introduced (e.g. the floating-point representation 120), the conversion operations between integer numbers and the floating-point approximations 120 are defined, the arithmetic operations of additions, subtractions, and multiplications can be defined in exact integer arithmetic, and an approximation for the division operation based on a look-up table can be defined. Using these floating-point approximations 120, for example, an algorithm for solving small linear equation systems using Cramer’s rule can be specified. Finally, an exemplary application for determining prediction parameters for crosschannel predictions is described.

[0266] 2.1. Representation of floating-point approximations according to embodiments

[0267] The following specification of floating-point approximations (e.g. synonymously used as floating-point representation 120) according to embodiments represents a way for representing floating-point approximations by conventional two’s-complement integer arithmetic. The floating-point approximations 120 can, for example, be, in particular, used when intermediate results can exceed the range of conventional 32- or 64-bit integers. Furthermore, complex division operations can be approximated based on small look-up table.

[0268] The accuracy of all floating-point approximations 120 can be specified by the following constant parameter:

[0269] - FPANumDigitsVal can, for example, specify the number of significant binary digits (e.g.

[0270] N) in the floating-point approximation 120. Given the value of FPANumDigitsVal, all calculations for the significand 121 of a floating-point approximation 120 can be implemented using signed integer arithmetic with N = FPANumDigitsVal + 2 bits.

[0271] As an example, with FPANumDigitsVal = 30, all calculations for the significand 121 of a floating-point approximation 120 can, for example, be implemented in 32-bit signed integer arithmetic.

[0272] A floating point (e.g. floating-point) approximation 120 according to embodiments is specified as a triple (val, exp, sgn) (e.g. relating to 121, 122, 123) as follows:

[0273] - val 121 is an integer number representing the significant digits of a floating-point approximation 120, also referred to as significand 121. The value of val 121 can be represented as signed integer number of at least N = FPANumDigitsVal + 2 bits. Even though the actual value of val 121 can always be represented by an unsigned integer of FPANumDigitsVal bits, two additional bits and a signed integer representation can be required for intermediate values in calculations with the floating-point approximations 120. With FPANumDigitsVal = 30, all calculations related to the number val 121 representing the significand 121 of a floating-point approximation 120 can be done using 32-bit signed integers;

[0274] - exp 122 is an integer number representing the exponent 122;

[0275] - sgn 123 can be a bit representing the sign 123, where, for example, negative numbers have sgn = 1 and positive numbers have sgn = 0 (e.g. the other way round is also possible).

[0276] With x being a floating point (e.g. floating-point) representation 120, the elements of the triple (val, exp, sgn) specifying x are also referred to as x.val 121, x.exp 122, and x.sgn 123, respectively (e.g. the same holds true for variables y and z).

[0277] The floating-point value fx that is represented by a floating-point approximation x (120) can, for example, be given by:

[0278] fx = (1 - 2 * x.sgn) * x.val * 2^(x.exp).

[0279] Note that a value of 0 for the floating-point approximation x (120) can be represented by x.val = 0. When x.val = 0, the floating-point approximation 120 represents the value of 0, regardless of the values of x.exp 122 and x.sgn 123 (they may not have any meaning when x.val is equal to 0).

[0280] 2.2. Specification of the division look-up table

[0281] Division operations for floating-point approximations 120 according to embodiments can be specified based on a look-up table. The accuracy of division operations can, for example, be specified by one or more of the following two constant parameters:

[0282] - FPALog2DivTabSize specifies the binary logarithm of the number of elements in the look-up table. The look-up table used for division operations has (1 « FPALog2DivTabSize) elements.

[0283] - FPANumDigitsDivTab specifies the number of significant binary digits for the values of the division look-up table. Given the value of FPANumDigitsDivTab, the elements of the look-up table can be represented as unsigned integers with N = FPANumDigitsDivTab bits or as signed integers with N = FPANumDigitsDivTab +1 bits. The division look-up table is referred to as FPADivTab. It can, for example, be determined as specified by the following pseudo-code:

[0284] nom = 1 « ( FPALog2DivTabSize + FPANumDigitsDivTab - 1 )

[0285] off = 1 « FPALog2DivTabSize

[0286] for(k = 0; k< (l « FPALog2DivTabSize ); k++ ) {

[0287] denom = off + k

[0288] FPADivTab[ k ] = ( nom + (denom » 1 ) ) / denom

[0289] }

[0290] where the division represents an integer division with truncation towards zero.

[0291] As an example, with FPALog2DivTabSize = 8 and FPANumDigitsDivTab = 15, the look-up table FPADivTab would have 256 elements and each of these elements could be represented as 16-bit signed integer (e.g. or a 8-bit signed integer; e.g. or a 64-bit signed integer). The total size required for storing the look-up table would, in this specific instance, be 512 bytes.

[0292] 2.3. Conversion of floating-point approximations from and to integers

[0293] In the following x represents a floating-point approximation 120 and a represents an integer (e.g. integere representation 325). The following conversion functions (e.g. conversion (226 and 130) are specified:

[0294] - Conversion 226 of an integer 325 to a floating-point approximation 120:

[0295] x = FPApprox( a )

[0296] - Conversion 130 of a floating-point approximation 120 to an integer 325:

[0297] a = FPAToInteger( x )

[0298] This is also exemplary depicted in the Fig. 3, where a value a in an integer representation 325 is converserd 226 to the floating-point presentation 120 and conversed 130 back to the integer represnetation 325. Note, that the depicted and explained conversions 130 and 226 merely are exemplary and other conversions are also possible.

[0299] 2.3.1. Process for converting 226 an integer 325 to a floating-point approximation 120

[0300] Input to this process (e.g. conversion) 226 is a signed or unsigned integer 325 value a. Output of this process 226 is a floating-point approximation 120 x = (x.val, x.exp, x.sgn)=FPApprox( a ) representing the integer a. The output value x can be initialized with x.val = 0, x.exp = 0, and x.sgn = 0.

[0301] In embodiments of the inveniotn, when a is not equal to 0, the output value x can be modified as specified by the following pseudo-code:

[0302] if(a< 0) {

[0303] absVal = -a

[0304] x.sgn = 1

[0305] } else

[0306] absVal = a

[0307] x.exp = BitWidth( absVal ) - FPANumDigitsVal

[0308] if( x.exp < 0 )

[0309] x.val = absVal « ( -x.exp )

[0310] else

[0311] x.val = absVal » x.exp

[0312] Note that the last line in the pseudo-code may be described as a rounding towards zero. The depicted certain embodiment It can be implemented in a computational efficient way, but introduces a larger error than a correct rounding. As an alternative, (e.g. in other embodiments of the inveniton,) the last list

[0313] x.val = absVal » x.exp

[0314] could be replaced with a more accurate rounding, similar to

[0315] x.val = ( absVal + ( ( 1 « x.exp ) » 1 ) ) » x.exp

[0316] ex = BitWidth( x.val ) - FPANumDigitsVal

[0317] x.val = x.val » ex

[0318] x.exp = x.exp + ex

[0319] Here, the addition of the term “( 1 « x.exp ) » 1” approximates a mathematical correct rounding. The remaining lines correct the exponent 122, since the addition could have the effect that the result of the addition has a larger exponent 122 than the original value absVal.

[0320] 2.3.2. Process for converting 130 a floating-point approximation 120 to an integer 325

[0321] Input to this process (e.g. conversion) 130 is a floating-point approximation (120) x = (x.val, x.exp, x.sgn).

[0322] Output of this process 130 is an integer (325) a = FPATolnteger( x ) representing the floating-point approximation (120) x rounded to an integer value.

[0323] In embodiments, the value of a can be initially set to 0. When x.val is not equal to 0, the value of a can be modified as specified by the following pseudo-code:

[0324] if( x.exp >= 0 )

[0325] a = x.val « x.exp

[0326] else

[0327] a = ( x.val + ( 1 « ( -x.exp - 1 ) ) ) » ( -x.exp )

[0328] if( x.sgn )

[0329] a = -a

[0330] 2.4. Arithmetic operators for floating-point approximations

[0331] In the following x, y, and z represent floating-point approximations 120 and a represents an integer 325. In embodiments of the inveniton, one or more of the following arithmetic operators can be specified:

[0332] - Bit-shift to the left: y = x « a

[0333] - Bit-shift to the right: y = x » a

[0334] - Negation: y = -x

[0335] - Addition: z = x + y

[0336] - Subtraction: z = x - y

[0337] - Multiplication: z = x * y

[0338] - Reciprocal: y = 1 / x

[0339] - Division: z = x / y

[0340] The operator (e.g. decoder 12 or encoder 10) precedence for floating-point approximations 120 can be specified as follows (from highest to lowest):

[0341] - Negation („-x“)

[0342] - Multiplication and division („x * y“, „x I y“)

[0343] - Addition and subtraction („x + y“, „x - y“)

[0344] - Bit shifts („x » a“, „x « a“)

[0345] In embodiments, when order of precedence in an expression is not indicated explicitly by use of parentheses, the following rules may apply:

[0346] - Operations of a higher precedence are evaluated before any operation of a lower precedence.

[0347] - Operations of the same precedence are evaluated sequentially from left to right. 2.4.1. Bit shift to the left

[0348] Inputs to this process are:

[0349] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)), and - a non-negative integer number a representing a bit shift to the left.

[0350] Output of this process is a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the result of the bit shift y = x « a.

[0351] The floating-point approximation (120) y can, for example, be determined as specified by the following pseudo-code:

[0352] y.val = x.val

[0353] y.exp = x.exp + a

[0354] y.sgn = x.sgn

[0355] 2.4.2. Bit shift to the right

[0356] Inputs to this process are:

[0357] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)), and - a non-negative integer number a representing a bit shift to the right.

[0358] Output of this process is a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the result of the bit shift y = x » a.

[0359] The floating-point approximation (120) y can, for example, determined as specified by the following pseudo-code:

[0360] y.val = x.val

[0361] y.exp = x.exp - a

[0362] y.sgn = x.sgn

[0363] 2.4.3. Negation

[0364] Input to this process is a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)).

[0365] Output of this process is a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the result of the negation y = -x.

[0366] The floating-point approximation (120) y can, for example, be determined as specified by the following pseudo-code:

[0367] y.val = x.val

[0368] y.exp = x.exp

[0369] y.sgn = 1 - x.sgn 2.4.4. Addition

[0370] Input to this process are:

[0371] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)) representing the first summand;

[0372] - a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the second summand.

[0373] Output of this process is a floating-point approximation (120) z = (z.val (121), z.exp (122), z.sgn (123)) representing the result of the addition z = x + y.

[0374] If x.val is equal to 0, z is set equal to y, i.e., z.val = y.val, z.exp = y.exp, and z.sgn = y.sgn. Otherwise, if y.val is equal to 0, z is set equal to x, i.e., z.val = x.val, z.exp = x.exp, and z.sgn = x.sgn.

[0375] Otherwise (x.val is not equal to 0 and y.val is not equal to 0), the value of z can, for example, be first initialized with z.val = 0, z.exp = 0, and z.sgn = 0 and then updated as specified by the following pseudo-code: if( x.exp >= y.exp ) {

[0376] s = x.exp - y.exp

[0377] a = ( y.val + ( ( 1 « s ) - l ) ) » s

[0378] b = ( 1 - 2 * x.sgn ) * x.val + ( 1 - 2 * y.sgn ) * a

[0379] c = x.exp

[0380] } else {

[0381] s = y.exp - x.exp

[0382] a = ( x.val + ( ( 1 « s ) — 1 ) ) » s

[0383] b = ( 1 - 2 * x.sgn ) * a + ( 1 - 2 * y.sgn ) * y.val

[0384] c = y.exp

[0385] }

[0386] if( b < 0 ) {

[0387] b = -b

[0388] z.sgn = 1

[0389] }

[0390] if( b > 0 ) {

[0391] d = BitWidth( b ) - FPANumDigitsVal

[0392] if( d < 0 )

[0393] z.val = b « ( -d )

[0394] else

[0395] z.val = b » d

[0396] z.exp = c +d

[0397] }

[0398] Similarly as described in sec. 2.3.1, the right shift in the line

[0399] z.val = b » d

[0400] specifies a rounding towards zero, which could be replaced by a better approximation of a mathematical correct rounding similar to the one described above. For example, it could be replaced by

[0401] z.val = ( b + ( ( l « d ) » l ) ) » d

[0402] c = c + BitWidth( z.val ) - FPANumDigitsVal

[0403] or a similar approach.

[0404] 2.4.5. Subtraction

[0405] Input to this process are:

[0406] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)) representing the minuend; - a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the subtrahend.

[0407] Output of this process is a floating-point approximation (120) z = (z.val (121), z.exp (122), z.sgn (123)) representing the result of the subtraction z = x - y.

[0408] The floating-point approximation (120) z can, for example, be derived according to:

[0409] z =x + (-y)

[0410] That means, the difference z is given by adding x and the negated value of y.

[0411] 2.4.6. Multiplication

[0412] Input to this process are:

[0413] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)) representing the multiplier;

[0414] - a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the multiplicand.

[0415] Output of this process is a floating-point approximation (120) z = (z.val (121), z.exp (122), z.sgn (123)) representing the result of the multiplication z = x * y.

[0416] If x.val is equal to 0 or y.val is equal to 0, z can, for example, be set equal to zero, i.e., z.val = 0, while z.exp and z.sgn can be set to arbitrary values (typically, one would set z.exp = 0 and z.sgn = 0).

[0417] Otherwise (x.val is not equal to 0 and y.val is not equal to 0), the floating-point approximation z can, for example, be derived as specified by the following pseudo-code:

[0418] HSHIFT = FPANumDigitsVal » 1

[0419] LMASK = ( 1 « HSHIFT ) - 1

[0420] ah = x.val » HSHIFT

[0421] bh = y.val » HSHIFT

[0422] al = x.val & LMASK

[0423] bl = y.val & LMASK

[0424] z.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) » ( HSHIFT - 1 ) )

[0425] z.exp = x.exp + y.exp + FPANumDigitsVal - 1

[0426] z.sgn = x.sgn ^ y.sgn

[0427] if( z.val >= ( 1 « FPANumDigitsVal ) ) {

[0428] z.val = z.val » 1

[0429] z.exp = z.exp + 1

[0430] }

[0431] Note that HSHIFT and LMASK are constant values. Similarly, as described in sec. 2.3.1, the right shifts in the line

[0432] z.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) » ( HSHIFT- 1 ) ) specify rounding towards zero and could be replaced by more accurate variants. One possibility is to replace the line

[0433] z.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) »

[0434] ( HSHIFT - 1 ) )

[0435] with

[0436] off1 = ( al * bl + ( 1 « ( HSHIFT - 1) ) ) » HSHIFT

[0437] off2 = ( ah * bl + al * bh + off1 + ( 1 « ( HSHIFT - 2) ) ) » ( HSHIFT - 1 ) z.val = ( ( ah * bh ) « 1 ) + off2

[0438] 2.4.7. Reciprocal (approximation with look-up table)

[0439] Input to this process is a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)) with x.val being not equal to 0.

[0440] Output of this process is a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)) representing the reciprocal of x, i.e., y = 1 / x.

[0441] The floating-point approximation (120) y can, for example, be derived as specified by the following pseudo-code:

[0442] DSHIFT = FPANumDigitsVal - FPALog2DivTabSize - 1

[0443] DADD = ( 1 « ( DSHIFT - 1 ) ) - ( 1 « ( FPANumDigitsVal - 1 ) ) DMASK = ( 1 « FPALog2DivTabSize ) - 1

[0444] EXSUB = FPANumDigitsDivTab + FPANumDigitsVal - 2

[0445] a = ( x.val + DADD ) » DSHIFT

[0446] b = FPADivTabf a & DMASK ]

[0447] c = BitWidth( b ) - FPANumDigitsVal

[0448] y.val = b « ( — c )

[0449] y.exp = c – x.exp – ( a >> FPALog2DivTabSize ) – EXSUB

[0450] y.sgn = x.sgn

[0451] Note that DSHIFT, DADD, DMASK, and EXSUB are constant values.

[0452] 2.4.8. Division (approximation with look-up table)

[0453] Input to this process are:

[0454] - a floating-point approximation (120) x = (x.val (121), x.exp (122), x.sgn (123)) representing the dividend;

[0455] - a floating-point approximation (120) y = (y.val (121), y.exp (122), y.sgn (123)), with y.val being not equal to 0, representing the divisor. Output of this process is a floating-point approximation (120) z = (z.val (121), z.exp (122), z.sgn (123)) representing the result of the division z = x / y.

[0456] The floating-point approximation (120) z can, for example, be derived according to:

[0457] z =x* (1 / y)

[0458] That means, the quotient z is given by multiplying x with the reciprocal of y.

[0459] 2.5. Solving linear equation systems using floating-point approximations 120

[0460] According to certain embodiments of the present invention described herein, linear equation systems 113 can be solved using Cramer’s rule. All calculations can, for example, be done using the approximate floating-point arithmetic described above. Further, certain embodiments can be configured to use calculations done using the approximate floatingpoint arithmetic and calculations done in integer arithmetic.

[0461] 2.5.1. Derivation process for a sub vector

[0462] Inputs to this process are:

[0463] - an N-dimensional vector vec of floating-point approximations 120, with N > 1;

[0464] - an index r.

[0465] Output of this process is an (N - 1)-dimensional vector subVec that is obtained by deleting the r-th element from the vector vec.

[0466] The (N - 1)-dimensional vector subVec can, for example, be obtained as specified by the following peudo-code:

[0467] for( k = 0;k< N - 1; k++ )

[0468] subVecf k ] = vec[ k + (k>=r? l: 0)]

[0469] 2.5.2. Derivation process for a sub-matrix

[0470] Inputs to this process are:

[0471] - an NxN matrix mat of floating-point approximations 120, with N > 1;

[0472] - a row index r; and

[0473] - a column index c.

[0474] Output of this process is an (N - 1)x(N - 1) matrix subMat that is obtained by deleting the r-th row and the c-th column from the matrix mat.

[0475] The (N - 1)x(N - 1) matrix subMat can, for example, be obtained as specified by the following peudo-code: for( k = 0; k< N - 1; k++ )

[0476] for( n = 0; n < N - 1; n++ )

[0477] subMat[ k ] [ n ] = mat[ k + (k>=c? 1: 0 ) ][n + (n>=r? 1: 0 ) ]

[0478] 2.5.3. Derivation process for the determinant of a matrix

[0479] Inputs to this process is an NxN matrix mat of floating-point approximations 120, with N > 0.

[0480] Output of this process is a floating-point approximation 120 det that represents the determinant of the matrix mat.

[0481] If N is equal to 1, the determinant det is set equal to det = x

[0000]

[0000] .

[0482] Otherwise (N is greater than 1), the determinant det can, for example, derived as specified by the following recursive process:

[0483] - The determinant is set equal to det = FPNum( 0 ) (e.g. returning a floating-point representation 120 matrix with 0 values for significands 121, exponents 122 and signs 123).

[0484] - For k proceeding over the range from 0 to N - 1, inclusive, the following may apply:

[0485] - The (N - 1)x(N - 1) sub-matrix subMat is derived by invoking the derivation process for a sub-matrix with mat, the row index k, and the column index 0 as inputs and the output is assigned to the sub-matrix subMat.

[0486] - The determinant subDet of the (N - 1)x(N - 1) sub-matrix subMat is derived by invoking the derivation process for the determinant of a matrix as specified in this clause with subMat as input and the output is assigned to subDet.

[0487] - Depending on k, the determinant det can, for example, be updated as specified by the following pseudo-code:

[0488] if( ( k & 1 ) = = 1 )

[0489] det = det - mat

[0000] [ k ] * subDet

[0490] else

[0491] det = det + mat

[0000] [ k ] * subDet

[0492] 2.5.4. Process for solving a linear equation system 113 with floating-point matrices and vectors

[0493] Inputs to this process are:

[0494] - an NxN matrix mat of floating-point approximations 120, with N > 0;

[0495] - a N-dimensional vector vec of floating-point approximations 120;

[0496] - an unsigned integer bshift specifying the precision of the output.

[0497] Output of this process is an N-dimensional vector res of integer values. The determinant detMat of the matrix mat can be determined by invoking the derivation process for the determinant of a matrix as specified above with mat as input and the output is assigned to detMat.

[0498] If detMat. val is equal to 0, the value of res

[0000] can be set equal to res

[0000] = 0.

[0499] Otherwise (detMat.val is not zero), the value of res

[0000] can, for example, be derived as follows:

[0500] - The NxN matrix matX of floating-point approximations 120 can, for example, be derived as specified by the following pseudo-code:

[0501] for( k = 0; k < N; k++ )

[0502] matX

[0000] [ k ] = vec[ k ]

[0503] for( c = 1; c < N; c++ )

[0504] for( k = 0; k < N; k++ )

[0505] matX[ c ] [ k ] = mat[ c ] [ k ]

[0506] - The determinant detX of the matrix matX can, for example, be determined by invoking the derivation process for the determinant of a matrix as specified above with matX as input and the output is assigned to detX.

[0507] - The value of res

[0000] can, for example, be derived by:

[0508] res[0] = FPAToInteger( ( detX / detMat ) « bshift )

[0509] When N is greater than 1, the values res[ k ] with k being in the range of 1 to N - 1, inclusive, can, for example, be determined by the following recursive process:

[0510] - The (N - 1)x(N - 1) sub-matrix subMat can be determined by invoking the derivation process for a sub-matrix as specified above with mat, the row index 0, and the column index 0 as inputs and the output is assigned to the sub-matrix subMat.

[0511] - The (N - 1)-dimensional sub-vector subVec can be determined by invoking the derivation process for a sub-vector as specified above with vec and the index 0 as inputs and the output is assigned to the sub-vector subVec.

[0512] - The (N - 1)-dimensional sub-vector subVec can, for example, be modified as specified by the following pseudo-code:

[0513] scale = FPNum( res

[0000] ) » bshift

[0514] for( k = 0; k < N - 1; k++ )

[0515] subVec[ k ] = subVec[ k ] - scale * mat

[0000] [ 1 + k ]

[0516] - The process for solving a linear equation system with floating-point matrices and vectors (e.g. in floating-point representations 120) as specified in this clause can be invoked with the (N - 1)x(N - 1) matrix subMat, the (N - 1)-dimensional vector subVec, and the integer number bshift as input and the output is assigned to the (N - 1)- dimensional integer vector subRes.

[0517] - The values res[ k ] with k being in the range of 1 to N - 1, inclusive, can, for example, be determined by:

[0518] for( k = 1; k < N; k++ )

[0519] res[ k ] = subRes[ k - 1 ]

[0520] 2.5.5. Process for solving a linear equation system 113 in integer arithmetic (e.g.

[0521] using floating-point representation 120 for intermediate results)

[0522] Inputs to this process are:

[0523] - an NxN matrix mat of integer values, with N > 0;

[0524] - a N-dimensional vector vec of integer values;

[0525] - an unsigned integer bshift specifying the precision of the output.

[0526] Output of this process is an N-dimensional vector res of integer values.

[0527] The NxN matrix fpaMat of floating-point approximations 120 can, for example, be derived as specified by the following pseudo-code:

[0528] for( c = 0; c < N; c++ )

[0529] for( r = 0; r < N; r++ )

[0530] fpaMatf c ] [ r ] = FPApprox( mat[ c ] [ r ] )

[0531] The N-dimensional vector fpaVec of floating-point approximations 120 can, for example, be derived as specified by the following pseudo-code:

[0532] for( k = 0; k < N; k++ )

[0533] fpaVec[ k ] = FPApprox ( vec[ k ] )

[0534] The N-dimensional output vector res is derived by invoking the process for solving a linear equation system 113 with floating-point matrices and vectors as specified above with fpaMat, fpaVec, and bshift as inputs and the output is assigned to res.

[0535] 2.6. Cross-channel prediction with derived prediction parameters

[0536] In the following, the derivation of the cross-channel prediction signal (e.g. the scaled and offset inter-channel predictor 112) with one and two reference channels 106 is described in more detail. Nonetheless, the approach can be extended to cross-channel prediction with more than two reference channels 106 in a straightforward way.

[0537] The shift parameter s (e.g. a constant shift parameter which determines the numerical accuracy of the inter-channel prediction (e.g. as performed by inter-channel predictor unit 136) of embodiments) shall be given. As an example, the shift parameter can be set to s = 8 or s = 16 (e.g. or s = 32, or s = 4). In addition, the parameter M specifying the number of preceding samples (e.g. in the already decoded / encoded portion 102 / 102* and the corresponding portion 103) used for deriving the prediction parameters 109 and 111 shall be given. As an example, it could be set equal to M = 4, M = 8, M = 16, or M = 32, where different values could be used depending on the number of reference channels 106.

[0538] Furthermore, x[c][ / c] denotes the original samples of the signal 14, where c denotes the channel index and k denotes the sample location. Furthermore, x'[c][ / c] denotes already coded and reconstructed samples of the signal 14 and x[c][ / c] denotes prediction samples. The current block is characterized by a block size N, which denotes the number of samples inside the block 101 of the current channel 105 with channel index c, and the start sample location k0.

[0539] 2.6.1. Cross-channel prediction with one reference channel

[0540] Given is the channel index r of the considered reference channel 106.

[0541] According to embodiments, the cross-component prediction signal (e.g. 112) can, for example, be derived by the following ordered steps:

[0542] 1. The 2x2 matrix C and the vector v of size 2 can be calculated according to:

[0543]

[0544] 2. The process solving a linear equation system 113 in integer arithmetic as specified above (e.g. as in 2.5.5) is invoked with mat being equal to C, vec being equal to v, and bshift being equal to s as inputs and the output is the integer vector res of size 2.

[0545] 3. The parameters b (109) and a (111) are set according to

[0546] b = res[0],

[0547] a = res[1]. 4. For each sample location k, with k = k0...k0+ N — 1, the prediction samples can be derived according to

[0548]

[0549] Note that, when the sample bit depth (i.e., the bit depth of the values %'[.][.]) is equal to ns, an integer representation 325 with a bit depth of at least nc= 2ns+ log2M bits can be advantageously selected for calculating and storing the matrix C and the vector v. For example, if the sample bit depth nsis 24 and the number of preceding samples used for calculating the scaling factor and offset is equal to M = 16, then an integer representation 325 with 52 bits or more is used for calculating and storing C and v.

[0550] In Fig. 2b it is exemplary depicted, when a conversion 226 can be performed in encoders 10 or decoders 12 according to embodiments of the invention. An LES obtainer 235 of a decoder 12 or encoder 10 can be configured to obtain a LES 113 based on the already decoded portion 102 (in the encoder 10 this would be the already encoded portion 102*) and the corresponding portions 103 (e.g. even though in this part of the description only one reference / second channel 106 is shown for displaying all possibilities, more than one portion is depicted) in the integer representation 325. Afterwards, the LES 113 can be subjected by embodiments to a conversion 226 to obtain a floating-point representation 120 of the LES 113’.

[0551] As an alternative, which could, in particular, be used if the original signal has a comparable high bit depth, the reconstructed samples of the current channel 105 and the reference channel 106 could first be converted to floating-point approximations 120. Then, the matrix C and the vector v are directly calculated as a matrix and vector of floating-point approximations 120, respectively. Then, the result vector res of integer values is derived by invoking the process for solving a linear equation system 113 with floating-point matrices and vectors (e.g. as described in 2.5.4). Such an approach is exemplary depicted in Fig.

[0552] 2a, wherein, according to embodiments, the already decoded portion 102 (in the encoder 10 this would be the already encoded portion 102*) is subjected to a conversion 226 to obtain a floating-point representation 120 of the already decoded portion 102’ and the corresponding portions 103 of the second channels 106 (e.g. even though in this part of the description only one reference / second channel 106 is shown for displaying all possibilities, more than one portion is depicted) are subjected to a conversion 226 to obtain a floatingpoint representation 120 of the corresponding portions 103’. Afterwards, an LES obtainer 235 of an encoder 10 or decoder 12 is applied to obtain the LES 113’ in the floating-point representation 120.

[0553] 2.6.2. Cross-channel prediction with two reference channels 106

[0554] Given are the channel indices r0and r of the considered reference channels 106.

[0555] The cross-component prediction signal is derived by the following ordered steps:

[0556] 1. The 3x3 matrix C and the vector v of size 3 are calculated according to:

[0557]

[0558] 2. The process solving a linear equation system 113 in integer arithmetic as specified above (e.g. as in 2.5.5) can be invoked with mat being equal to C, vec being equal to v, and bshift being equal to s as inputs and the output is the integer vector res of size 3.

[0559] 3. The parameters b0, brand a are set according to

[0560] b0= res[0],

[0561] b = res[1],

[0562] a = res[2].

[0563] 4. For each sample location k, with k = k0... k0+ N - 1, the prediction samples are derived according to

[0564]

[0565] Note that, when the sample bit depth (i.e., the bit depth of the values %'[.][.]) is equal to ns, an integer representation 325 with a bit depth of at least nc= 2ns+ log2M bits should be used for calculating and storing the matrix C and the vector v. For example, if the sample bit depth nsis 24 and the number of preceding samples used for calculating the scaling factor 109 and offset 111 is equal to M = 16, then an integer representation 325 with 52 bits or more is used for calculating and storing C and v.

[0566] an alternative, which could, in particular, be used if the original signal has a comparable high bit depth, the reconstructed samples of the current channel 105 and the reference channels 106 could first be converted to floating-point approximations 120. Then, the matrix C and the vector v can be directly calculated as a matrix and vector of floating-point approximations 120, respectively. Then, the result vector res of integer values is derived by invoking the process for solving a linear equation system 113 with floating-point matrices and vectors (e.g. as described in 2.5.4).

[0567] Note, reference is drawn again to the Figs. 2a and 2b.

[0568] Note: While the multi-channel signal 14 used in the above examples might be obtained by at least one of Electrocardiography, Electroencephalography, Electromyography or seismic measurement, and / or 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, each channel might be a onedimensional waveform signal such as an audio signal or even a two-dimensional signal such as in case of a stereo or multi-view picture or video signal.

[0569] 3. Coded environment

[0570] The above description is extended in the following by 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. 5 which shows an encoder for encoding a multi-channel digital signal 14 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. 5 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. 5 either by adopting all details / functionalities described with respect to Fig. 5 or with leaving-out some of the details / functionalities described with respect to Fig. 5. Sometimes such “optional” features of Fig. 5 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. 1 shall not be restricted to the these explicitly identified variations of Fig. 5 in terms of leaving-out certain features.

[0571] In Fig. 5, 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. 5 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. 5 at 24.

[0572] 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 multichannel audio signal.

[0573] Fig. 5 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 are (e.g. 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. 5 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.

[0574] The module in encoder 10 performing the one or more of channel transformation, channel permutation and temporal mutual alignment is indicated in Fig. 5 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.

[0575] Thus, the “actual coding” relates to the coded channels in domain 28. In the coded domain 28, the coded channels are depicted in Fig. 5 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. 5 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 co-located 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. 5, 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.

[0576] 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 colocated. 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. 5 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. 5 by way of shading. In this regard, note that in Fig. 5, merely one temporal block 140 has been illustrated explicitly in order to reduce the complexity of Fig. 5. 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. 5, 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.

[0577] 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 sums-up 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 onedimensional transform signaled in the data stream as described hereinbelow.

[0578] 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. 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.

[0579] 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.

[0580] 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. 5. 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. Further, it might be that the coding of the coded channels also interrupts or restricts interchannel 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 intra-channel 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. 5. 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.

[0581] 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.

[0582] 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. 5. Additionally or alternatively, encoder 10 and decoder 12 may support an interprediction mode (which mode may also be called cross-channel 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.

[0583] 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.

[0584] 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.

[0585] 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. 5. 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.

[0586] 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.

[0587] 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 rate-distortion 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 step-size and, in case of the use of a low-complexity vector quantizer, by additionally invoking a state-machine based on the parity of previously decoded quantization indices in order to reconstruct the current quantization index.

[0588] 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 (e.g. the spectrally shaped coefficients being subjected to inverse quantization and inverse transformation to reconstruct the timedomain signal of the current block 140). 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.

[0589] 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 CABA 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. 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.

[0590] 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.

[0591] 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.

[0592] As mentioned before, Fig. 5 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. 5, 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 embodiments described herein.

[0593] The description is now resumed with respect to the announced subsequently described embodiments.

[0594] Before describing implementation alternatives, the description proceeds with a description of methods for encoding and decoding according to embodiments of the invention with regards to Fig. 6 and Fig. 7. Features and functionalities described herein can be implemented into any of the embodiments described above. Features and functionalities described above can be implemented into any of the embodiments described below.

[0595] Fig. 6 shows a method 670 for decoding a multi-channel (e.g. 14) signal by block-based predictive decoding. An inter-channel prediction 671 is applied on a current block (e.g. 101) of a first channel (e.g. 105). For this purpose, a corresponding block (e.g. 104) of each of one or more second channels (e.g. 106) is weighted 672 (e.g. 107) using a respective scaling factor (e.g. 109), thereby obtaining a scaled inter-channel predictor (e.g. 108) from each of the one or more second channels (e.g. 106).

[0596] A sum 673 (e.g. 110) is then formed over the scaled predictors (e.g. 108) of the one or more second channels (e.g. 106) and an offset (e.g. 111), so as to obtain a scaled and offset inter-channel predictor (e.g. 112). The scaling factor (e.g. 109) for each of the one or more second channels (e.g. 106) and the offset (e.g. 111) are determined 674 by solving 677 a linear equation system (e.g. 113), which minimizes a square prediction error when using the inter-channel prediction to predict an already decoded portion (e.g. 102; e.g. 102*) of the first channel (e.g. 105) from a corresponding portion (e.g. 103) of the one or more second channels (e.g. 106).

[0597] The linear equation system (e.g. 113) is solved 677 in integer arithmetic while representing intermediate results using a floating-point representation (e.g. 120). The floating-point representation (e.g. 120) comprises a significand (e.g. 121), an exponent (e.g. 122), and a sign (e.g. 123), and provides a floating-point representation of the scaling factor (e.g. 109’) for each of the one or more second channels (e.g. 106) and the offset (e.g. 11 T). The scaling factors (e.g. 109’) and the offset (e.g. 111’) represented in the floating-point representation (e.g. 120) are subsequently subjected 678 to a conversion (e.g. 130) into an integer representation (e.g. 325).

[0598] The scaled and offset inter-channel predictor (e.g. 112) is corrected 676 (e.g. 115) using a prediction residual (e.g. 117) decoded from a data stream (e.g. 16). The method 670 is executed such that the prediction, the determination of the scaling factors and offsets, and the correction are performed in integer arithmetic.

[0599] Fig. 7 shows a method 780 for encoding a digital time-varying signal (e.g. 14). The method comprises determining 784 the scaling factor for each of the one or more second channels and the offset by solving a linear equation system which minimizes a square prediction error when using the inter-channel prediction to predict an already encoded portion of the first channel from a corresponding portion of the one or more second channels. The determining 784 is done by solving 787 the linear equation system in the integer arithmetic with representing intermediate results using a floating-point representation and subjecting 788 the scaling factor for each of the one or more second channels and the offset to a conversion from the floating-point representation to an integer representation.

[0600] The method 780 further comprises applying 781 an inter-channel prediction on a current block of a first channel by weighting 782 a corresponding block of each of a one or more second channels using a scaling factor for the respective second channel to obtain a scaled inter-channel predictor from each of the one or more second channels and forming 783 a sum over the scaled predictor of the one or more second channels and an offset so as to obtain a scaled and offset inter-channel predictor.

[0601] The method further comprises encoding 786 a prediction residual for correcting the scaled and offset inter-channel predictor into a data stream.

[0602] 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.

[0603] 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.

[0604] 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.

[0605] 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.

[0606] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine-readable carrier.

[0607] 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.

[0608] 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.

[0609] 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.

[0610] 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.

[0611] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.

[0612] 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.

[0613] 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.

[0614] 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.

[0615] The apparatus described herein, or any components of the apparatus described herein, may be implemented at least partially in hardware and / or in software.

[0616] 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.

[0617] The methods described herein, or any components of the apparatus described herein, may be performed at least partially by hardware and / or by software. 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.

Claims

Claims1. Decoder (12) for decoding a multi-channel signal (14) by block-based predictive decoding, configured toapply an inter-channel prediction on a current block (101) of a first channel (105) by weighting (107) a corresponding block (104) of each of a one or more second channels (106) using a scaling factor (109) for the respective second channel (106) to obtain a scaled inter-channel predictor (108) from each of the one or more second channels (106) andforming (110) a sum over the scaled inter-channel predictor (108) of the one or more second channels (106) and an offset (111) so as to obtain a scaled and offset inter-channel predictor (112),determine the scaling factor (109) for each of the one or more second channels (106) and the offset (111) by solving a linear equation system (113) which minimizes a square prediction error when using the inter-channel prediction to predict an already decoded portion (102) of the first channel (105) from a corresponding portion (103) of the one or more second channels (104), andcorrect (115) the scaled and offset inter-channel predictor (108) using a prediction residual (117) decoded from a data stream (16),wherein the decoder (12) is configured toperform the prediction, determination and the correction (115) in an integer arithmetic, andsolve the linear equation system (113) bysolving the linear equation system (113) in the integer arithmetic with representing intermediate results using a floating-point representation (120) which comprises a significand (121), an exponent (122) and a sign (123) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), andsubjecting the scaling factor (109’) for each of the one or more second channels (106) and the offset (111’) to a conversion (130) from the floatingpoint representation (120) to an integer representation.

2. Decoder (12) of claim 1, wherein the decoder (12) is configured to, in solving the linear equation system (113) in the integer arithmetic,compute, by a conversion (226) from the integer representation (325) to the floating-point representation (130), the floating-point representation (130) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),so that the significand (121) is filled, from highest to lowest digit,a most significant non-zero bit of the integer representation (325) and n-1 bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at the nthdigit or higher,a most significant non-zero bit of the integer representation (325) and all bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at a mthdigit with m < n, followed by n-m zeros,wherein n is a non-negative integer.

3. Decoder (12) of claim 1, wherein the decoder (12) is configured to, in solving the linear equation system (113) in the integer arithmetic,compute, by a conversion (226) from the integer representation (325) to the floating-point representation (120), the floating-point representation (120) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),so that the significand (121) is filled, from highest to lowest significance,a most significant non-zero bit of the integer representation (325) and n-1 bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at the nthdigit or higher, with the exponent (122) being set to equal a number of digits which the most significant non-zero bit of the integer representation (325) is above the nthdigit,a most significant non-zero bit of the integer representation (325) and all bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at a mthdigit with m < n, followed by n-m zeros, with the exponent (122) being set to equal a number of digits which the most significant non-zero bit of the integer representation (325) is below the nthdigit times minus one, wherein n is a non-negative integer.

4. Decoder (12) of claim 2 or 3, configured toin computing the floating-point representation (120) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already decoded portion (102) of the first channel (106) and the corresponding portion (103) of the one or more second channels (106),set the sign (123) of the floating-point representation (120) depending on the integer representation (325) being larger than zero or not, andtake the absolute value of the integer representation (325) if the integer representation (325) is negative.

5. Decoder (12) of any previous claim 2 to 4,wherein the integer arithmetic is a x-bit integer arithmetic with x being equal to or larger than n+2, and / orwherein the decoder (12) is configured to represent the signifcand (121) using a signed x-bit integer representation with x being equal to or larger than n+2.

6. Decoder (12) of any previous claim 1 to 5, wherein the decoder (12) is configured toperform the conversion (130) from the floating-point representation (120) to the integer representation (325) byif the exponent (122) is zero, setting the integer representation (325) to be equal to the significand (121),if the exponent (122) is greater than zero, shifting the significand (121) a number of bits to the left equaling the exponent (122) to obtain the integer representation (325),if the exponent (122) less than zero, shifting the significand (121), or the significand (121) plus a rounding offset (327), a number of bits to the right equaling an absolute of the exponent (122) to obtain the integer representation (325).

7. Decoder (12) of claim 6, configured toin the performing the conversion (130) from the floating-point representation (120) to the integer representation (325),subject the integer representation (325) to an additive inversion if the sign (123) of the floating-point representation (120) is negative.

8. Decoder (12) of any previous claim 1 to 7, wherein the decoder (12) is configured to, in solving the linear equation system (113) in the integer arithmetic,compute, by a conversion (226) from the integer representation (325) to the floating-point representation (120), the floating-point representation (120) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106), byx.val = 0, x.exp = 0, and x.sgn = 0if (a!= 0) {if( a < 0 ) {absVal = -ax.sgn = 1} elseabsVal = ax.exp = BitWidth( absVal ) - FPANumDigitsValif( x.exp < 0 )x.val = absVal « ( -x.exp )elsex.val = absVal » x.exp}wherein a is the integer representation (325), x.val is the significand (121), x.exp is the exponent (122) and x.sgn is the sign (123) of the floating-point representation (120), BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, and FPANumDigitsVal is an integer parameter.

9. Decoder (12) of any previous claim 1 to 8, wherein the decoder (12) is configured toperform the conversion (130) from the floating-point representation (120) to the integer representation (325) bya = 0if (a!= 0) {if( x.exp >= 0 )a = x.val « x.expelsea = ( x.val + ( 1 « ( -x.exp - 1 ) ) ) » ( -x.exp )if( x.sgn )a = -a}wherein a is the integer representation (325), x.val is the significand (121), x.exp is the exponent (122) and x.sgn is the sign (123) of the floating-point representation (120).

10. Decoder (12) of any previous claim 1 to 9, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109) for each of the one or more second channels (106) and the offset (111) in the floating-point representation (111), perform one or more ofa bit shift to the left byy.val = x.valy.exp = x.exp + ay.sgn = x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the bit shift to the left,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the bit shift to the left, anda is an integer indicating the number of bits to be shifted to the left,a bit shift to the right byy.val = x.valy.exp = x.exp - ay.sgn = x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the bit shift to the right,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the bit shift to the right, and a is an integer indicating the number of bits to be shifted to the right,a negation byy.val = x.valy.exp = x.expy.sgn = 1 - x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the negation,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the negation,an addition byif (x.val = 0) { z.val = y.val, z.exp = y.exp, and z.sgn = y.sgn }if (y.val = 0) { z.val = x.val, z.exp = x.exp, and z.sgn = x.sgn }if (x.val!= 0) AND (y.val!= 0) {if( x.exp >= y.exp ) {s = x.exp - y.expa = ( y.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * x.val + ( 1 - 2 * y.sgn ) * ac = x.exp} else {s = y.exp - x.expa = ( x.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * a + ( 1 - 2 * y.sgn ) * y.valc = y.exp}if( b < 0 ) {b = -bz.sgn = 1}if( b > 0 ) {d = BitWidth( b ) - FPANumDigitsValif( d < 0 )z.val = b « ( -d )elsez.val = b » dz.exp = c +d}}whereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a first summand,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a second summand,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of a sum of the first and second summands, BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,a subtraction byif (x.val = 0) { z.val = y.val, z.exp = y.exp, and z.sgn = y.sgn }if (y.val = 0) { z.val = x.val, z.exp = x.exp, and z.sgn = x.sgn }if (x.val!= 0) AND (y.val!= 0) {if( x.exp >= y.exp ) {s = x.exp - y.expa = ( y.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * x.val + ( 1 - 2 * y.sgn ) * ac = x.exp} else {s = y.exp - x.expa = ( x.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * a + ( 1 - 2 * y.sgn ) * y.valc = y.exp}if( b < 0 ) {b = -bz.sgn = 1}if( b > 0 ) {d = BitWidth( b ) - FPANumDigitsValif( d < 0 )z.val = b « ( -d )elsez.val = b » dz.exp = c +d}}whereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a minuend,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a negation of a subtrahend,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of the difference of the minuend and the subtrahend,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,a multiplication byif (x.val = 0) OR (y.val = 0) { z.val = 0 }if (x.val!= 0) AND (y.val!= 0) {ah = x.val » HSHIFTbh = y.val » HSHIFTal = x.val & LMASKbl = y.val & LMASKz.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) » ( HSHIFT - 1 ) )z.exp = x.exp + y.exp + FPANumDigitsVal - 1z.sgn = x.sgn ^ y.sgnif( z.val >= ( 1 « FPANumDigitsVal ) ) {z.val = z.val » 1z.exp = z.exp + 1}}whereinHSHIFT = FPANumDigitsVal » 1LMASK = ( 1 « HSHIFT ) - 1x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a first factor,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a second factor,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of the product of the first and the second factor, andFPANumDigitsVal is an integer parametera multiplicative inversion bya = ( x.val + DADD ) » DSHIFTb = FPADivTab[ a & DMASK ]c = BitWidth( b ) - FPANumDigitsValy.val = b « ( — c )y.exp = c – x.exp – ( a >> FPALog2DivTabSize ) – EXSUBy.sgn = x.sgnwhereinDSHIFT = FPANumDigitsVal - FPALog2DivTabSize - 1DADD = ( 1 « ( DSHIFT - 1 ) ) - ( 1 « ( FPANumDigitsVal - 1 ) )DMASK = ( 1 « FPALog2DivTabSize ) - 1EXSUB = FPANumDigitsDivTab + FPANumDigitsVal -2x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the multiplicative inversion, y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of the reciprocal,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,FPADivTab[... ] is a vector storing pre-computed approximated reciprocals;FPALog2DivTabSize indicates a bit length of a non-signed integer representation of the reciprocals;FPANumDigitsDivTab indicates the length of the vector,a division bya = ( x.val + DADD ) » DSHIFTb = FPADivTab[ a & DMASK ]c = BitWidth( b ) - FPANumDigitsValX.val = b « ( — c )X.exp = c - x.exp - ( a » FPALog2DivTabSize ) - EXSUBX.sgn = x.sgnif (y.val = 0) { z.val = 0 }if (y.val!= 0) {ah = X.val » HSHIFTbh = y.val » HSHIFTal = X.val & LMASKbl = y.val & LMASKz.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) » ( HSHIFT - 1 ) )z.exp = X.exp + y.exp + FPANumDigitsVal - 1z.sgn = X.sgn ^ y.sgnif( z.val >= ( 1 « FPANumDigitsVal ) ) {z.val = z.val » 1z.exp = z.exp + 1}}whereinDSHIFT = FPANumDigitsVal - FPALog2DivTabSize - 1DADD = ( 1 « ( DSHIFT - 1 ) ) - ( 1 « ( FPANumDigitsVal - 1 ) )DMASK = ( 1 « FPALog2DivTabSize ) - 1EXSUB = FPANumDigitsDivTab + FPANumDigitsVal -2x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of the divisor,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of the dividend,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,FPADivTab[... ] is a vector storing pre-computed approximated reciprocals;FPALog2DivTabSize indicates a bit length of a non-signed integer representation of the reciprocals;FPANumDigitsDivTab indicates the length of the vector.

11. Decoder (12) of any previous claim 8 to 10,wherein the integer arithmetic is a x-bit integer arithmetic with x being equal to or larger than FPANumDigitsVal+2, and / orwherein the decoder (12) is configured to represent the signifcand (121) using a signed x-bit integer representation with x being equal to or larger than FPANumDigitsVal+2.

12. Decoder (12) of any previous claim 1 to 11, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109’) for each of the one or more second channels (106’) and the offset (111) in the floating-point representation (120), perform divisions by table look-up.

13. Decoder (12) of any previous claim 1 to 12, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111) in the floating-point representation (120), solve the linear equation (113) system using the Cramer’s rule.

14. Decoder (12) of any previous claim 1 to 13, configured toset-up the linear equation system (113) based on the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) in the integer arithmetic with representing intermediate results using the integer representation (325),transfer the linear equation system (113) to the floating-point representation (120), and perform the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120).

15. Decoder (12) of any previous claim 1 to 13, configured tocompute a floating-point representation (120) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),set-up the linear equation system (113) based on the floating-point representation (120) of the already decoded portion (102) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) with representing intermediate results using the floating-point representation (120), andperform the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120).

16. Decoder (12) of any previous claim 1 to 15, whereinthe corresponding block (104) is co-located, or offset by a predetermined amount signaled in the data stream (16) relative, to the current block (101) and the corresponding portion (103) to the already decoded portion (102) temporally and / or spatially.

17. Decoder (12) of any previous claim 1 to 16,wherein the multi-channel signal (14) is obtained by at least one of Electrocardiography, Electroencephalography, Electromyography or seismic measurement, and / or wherein the multi-channel digital signal (14) is a bio-physiological waveform data such as an electroencephalography (EEG) signal, an electrocardiogram (ECG), or an electromyography (EMG) signal, or seismic waveform data.

18. Decoder (12) of any previous claim 1 to 17, configured toIn subjecting the scaling factor (109) for each of the one or more second channels (106) and the offset (111) to a conversion (120) from the floating-point representation (120) to the integer representation (325), derive the integer representation (325) by subject the significand (121) to a bit shift by an amount of bits set equaling an absolute value of the exponent (122).

19. Decoder (12) of any previous claim 1 to 18, configured toIn applying the inter-channel prediction on the current block (101) of a first channel (105) subject the sum over the scaled predictor (108) of the one or more second channels (106) and the offset (111) to bit shift to the right by s bits so as to obtain a scaled and offset inter-channel predictor (112), wherein s is a constant shift parameter which determines a numerical accuracy of the inter-channel prediction.

20. Encoder (10) for encoding a multi-channel signal (10) by block-based predictive encoding, configured toapply an inter-channel prediction on a current block (101) of a first channel (105) by weighting (107) a corresponding block (104) of each of a one or more second channels (106) using a scaling factor (109) for the respective second channel (106) to obtain a scaled inter-channel predictor (108) from each of the one or more second channels (106) andforming (111) a sum over the scaled inter-channel predictor (108) of the one or more second channels (106) and an offset (111) so as to obtain a scaled and offset inter-channel predictor (112),determine the scaling factor (109) for each of the one or more second channels (106) and the offset (111) by solving a linear equation system (113) which minimizes a square prediction error when using the inter-channel prediction to predict an already encoded portion (102*) of the first channel (105) from a corresponding portion (103) of the one or more second channels (106), andencode a prediction residual (117) for correcting (115) the scaled and offset inter-channel predictor (112) into a data stream (16),wherein the encoder (10) is configured toperform the prediction, determination and the encoding in an integer arithmetic, andsolve the linear equation system (113) bysolving the linear equation system (113) in the integer arithmetic with representing intermediate results using a floating-point representation (12) which comprises a significand (121), an exponent (122) and a sign (123) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), andsubjecting the scaling factor (109’) for each of the one or more second channels (106) and the offset (111’) to a conversion (130) from the floatingpoint representation (120) to an integer representation.

21. Encoder (10) of claim 20, wherein the encoder (10) is configured to, in solving the linear equation system (113) in the integer arithmetic,compute, by a conversion (226) from the integer representation (325) to the floating-point representation (120), the floating-point representation (120) of the already encoded portion (102*) of the first channel (105) and the corresponding portion of the one or more second channels or values derived from the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),so that the significand (121) is filled, from highest to lowest digit,a most significant non-zero bit of the integer representation (325) and n-1 bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at the nthdigit or higher,a most significant non-zero bit of the integer representation (325) and all bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at a mthdigit with m < n, followed by n-m zeros,wherein n is a non-negative integer.

22. Encoder (10) of claim 20, wherein the encoder (10) is configured to, in solving the linear equation system (113) in the integer arithmetic,compute, by a conversion (226) from the integer representation (325) to the floating-point representation (120), the floating-point representation (120) of the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already encoded portion of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),so that the significand (121) is filled, from highest to lowest significance,a most significant non-zero bit of the integer representation (325) and n-1 bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at the nthdigit or higher, with the exponent (122) being set to equal a number of digits which the most significant non-zero bit of the integer representation (325) is above the nthdigit,a most significant non-zero bit of the integer representation (325) and all bits of the integer representation (325) being lower in significance than, and immediately following, the most significant non-zero bit, if the most significant non-zero bit of the integer representation (325) is at a mthdigit with m < n, followed by n-m zeros, with the exponent (122) being set to equal a number of digits which the most significant non-zero bit of the integer representation (325) is below the nthdigit times minus one, wherein n is a non-negative integer.

23. Encoder (10) of claim 21 or 22, configured toin computing the floating-point representation (120) of the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already encoded portion (102*) of the firstchannel (105) and the corresponding portion (103) of the one or more second channels (106),set the sign (123) of the floating-point representation (120) depending on the integer representation (325) being larger than zero or not, andtake the absolute value of the integer representation (325) if the integer representation (325) is negative.

24. Encoder (10) of any previous claim 21 to 23,wherein the integer arithmetic is a x-bit integer arithmetic with x being equal to or larger than n+2, and / orwherein the encoder (10) is configured to represent the signifcand (121) using a signed x-bit integer representation (325) with x being equal to or larger than n+2.

25. Encoder (10) of any previous claim 20 to 24, wherein the encoder (10) is configured toperform the conversion (130) from the floating-point representation (120) to the integer representation (325) byif the exponent (122) is zero, setting the integer representation (325) to be equal to the significand (121),if the exponent (122) greater than zero, shifting the significand (121) a number of bits to the left equaling the exponent (122) to obtain the integer representation (325),if the exponent (122) less than zero, shifting the significand (121), or the significand (121) plus a rounding offset (327), a number of bits to the right equaling an absolute of the exponent (122) to obtain the integer representation (325).

26. Encoder (10) of claim 25, configured toin the performing the conversion (130) from the floating-point representation (120) to the integer representation (325),subject the integer representation (325) to an additive inversion if the sign (123) of the floating-point representation (120) is negative.

27. Encoder (10) of any previous claim 20 to 26, wherein the encoder (10) is configured to, in solving the linear equation system (113) in the integer arithmetic, compute, by a conversion (226) from the integer representation (325) to the floating-point representation (120), the floating-point representation (120) of the already encodedportion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) or values derived from the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106), byx.val = 0, x.exp = 0, and x.sgn = 0if (a!= 0) {if( a < 0 ) {absVal = -ax.sgn = 1} elseabsVal = ax.exp = BitWidth( absVal ) - FPANumDigitsValif( x.exp < 0 )x.val = absVal « ( -x.exp )elsex.val = absVal » x.exp}wherein a is the integer representation (325), x.val is the significand (121), x.exp is the exponent (122) and x.sgn is the sign (123) of the floating-point representation (120), BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, and FPANumDigitsVal is an integer parameter.

28. Encoder (10) of any previous claim 20 to 27, wherein the encoder (10) is configured toperform the conversion (130) from the floating-point representation (120) to the integer representation (325) bya = 0if (a!= 0) {if( x.exp >= 0 )a = x.val « x.expelsea = ( x.val + ( 1 « ( -x.exp - 1 ) ) ) » ( -x.exp )if( x.sgn )a = -a}wherein a is the integer representation (325), x.val is the significand (121), x.exp is the exponent (122) and x.sgn is the sign (123) of the floating-point representation (120).

29. Encoder (10) of any previous claim 20 to 28, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), perform one or more ofa bit shift to the left byy.val = x.valy.exp = x.exp + ay.sgn = x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the bit shift to the left,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the bit shift to the left, anda is an integer indicating the number of bits to be shifted to the left,a bit shift to the right byy.val = x.valy.exp = x.exp - ay.sgn = x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the bit shift to the right,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the bit shift to the right, and a is an integer indicating the number of bits to be shifted to the right,a negation byy.val = x.valy.exp = x.expy.sgn = 1 - x.sgnwhereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the negation,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) after the negation,an addition byif (x.val = 0) { z.val = y.val, z.exp = y.exp, and z.sgn = y.sgn }if (y.val = 0) { z.val = x.val, z.exp = x.exp, and z.sgn = x.sgn }if (x.val!= 0) AND (y.val!= 0) {if( x.exp >= y.exp ) {s = x.exp - y.expa = ( y.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * x.val + ( 1 - 2 * y.sgn ) * ac = x.exp} else {s = y.exp - x.expa = ( x.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * a + ( 1 - 2 * y.sgn ) * y.valc = y.exp}if( b < 0 ) {b = -bz.sgn = 1}if( b > 0 ) {d = BitWidth( b ) - FPANumDigitsValif( d < 0 )z.val = b « ( -d )elsez.val = b » dz.exp = c +d}}whereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a first summand,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a second summand,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of a sum of the first and second summands, BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,a subtraction byif (x.val = 0) { z.val = y.val, z.exp = y.exp, and z.sgn = y.sgn }if (y.val = 0) { z.val = x.val, z.exp = x.exp, and z.sgn = x.sgn }if (x.val!= 0) AND (y.val!= 0) {if( x.exp >= y.exp ) {s = x.exp - y.expa = ( y.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * x.val + ( 1 - 2 * y.sgn ) * ac = x.exp} else {s = y.exp - x.expa = ( x.val + ( ( 1 « s ) - 1 ) ) » sb = ( 1 - 2 * x.sgn ) * a + ( 1 - 2 * y.sgn ) * y.valc = y.exp}if( b < 0 ) {b = -bz.sgn = 1}if( b > 0 ) {d = BitWidth( b ) - FPANumDigitsValif( d < 0 )z.val = b « ( -d )elsez.val = b » dz.exp = c +d}}whereinx.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a minuend,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a negation of a subtrahend,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of the difference of the minuend and the subtrahend,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,a multiplication byif (x.val = 0) OR (y.val = 0) { z.val = 0 }if (x.val!= 0) AND (y.val!= 0) {ah = x.val » HSHIFTbh = y.val » HSHIFTal = x.val & LMASKbl = y.val & LMASKz.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) »( HSHIFT - 1 ) )z.exp = x.exp + y.exp + FPANumDigitsVal - 1z.sgn = x.sgn ^ y.sgnif( z.val >= ( 1 « FPANumDigitsVal ) ) {z.val = z.val » 1z.exp = z.exp + 1}}whereinHSHIFT = FPANumDigitsVal » 1LMASK = ( 1 « HSHIFT ) - 1x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of a first factor,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of a second factor,z.val is the significand (121), z.exp the exponent (122) and z.sgn the sign (123) of the floating-point representation (120) of the product of the first and the second factor, andFPANumDigitsVal is an integer parametera multiplicative inversion bya = ( x.val + DADD ) » DSHIFTb = FPADivTab[ a & DMASK ]c = BitWidth( b ) - FPANumDigitsValy.val = b « ( — c )y.exp = c – x.exp – ( a >> FPALog2DivTabSize ) – EXSUBy.sgn = x.sgnwhereinDSHIFT = FPANumDigitsVal - FPALog2DivTabSize - 1DADD = ( 1 « ( DSHIFT - 1 ) ) - ( 1 « ( FPANumDigitsVal - 1 ) )DMASK = ( 1 « FPALog2DivTabSize ) - 1EXSUB = FPANumDigitsDivTab + FPANumDigitsVal - 2x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) before the multiplicative inversion, y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of the reciprocal,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,FPADivTab[... ] is a vector storing pre-computed approximated reciprocals;FPALog2DivTabSize indicates a bit length of a non-signed integer representation of the reciprocals;FPANumDigitsDivTab indicates the length of the vector,a division bya = ( x.val + DADD ) » DSHIFTb = FPADivTab[ a & DMASK ]c = BitWidth( b ) - FPANumDigitsValX.val = b « ( — c )X.exp = c - x.exp - ( a » FPALog2DivTabSize ) - EXSUBX.sgn = x.sgnif (y.val = 0) { z.val = 0 }if (y.val!= 0) {ah = X.val » HSHIFTbh = y.val » HSHIFTal = X.val & LMASKbl = y.val & LMASKz.val = ( ( ah * bh ) « 1 ) + ( ( ah * bl + al * bh + ( ( al * bl ) » HSHIFT ) ) »( HSHIFT - 1 ) )z.exp = X.exp + y.exp + FPANumDigitsVal - 1z.sgn = X.sgn ^ y.sgnif( z.val >= ( 1 « FPANumDigitsVal ) ) {z.val = z.val » 1z.exp = z.exp + 1}}whereinDSHIFT = FPANumDigitsVal - FPALog2DivTabSize - 1DADD = ( 1 « ( DSHIFT - 1 ) ) - ( 1 « ( FPANumDigitsVal - 1 ) )DMASK = ( 1 « FPALog2DivTabSize ) - 1EXSUB = FPANumDigitsDivTab + FPANumDigitsVal -2x.val is the significand (121), x.exp the exponent (122) and x.sgn the sign (123) of the floating-point representation (120) of the divisor,y.val is the significand (121), y.exp the exponent (122) and y.sgn the sign (123) of the floating-point representation (120) of the dividend,BitWidth( ) is a function yielding a count of digits from lowest digit up to the most signifcant non. zero digit, both inclusive, andFPANumDigitsVal is an integer parameter,FPADivTab[... ] is a vector storing pre-computed approximated reciprocals;FPALog2DivTabSize indicates a bit length of a non-signed integer representation of the reciprocals;FPANumDigitsDivTab indicates the length of the vector.

30. Encoder (10) of any previous claim 27 to 29,wherein the integer arithmetic is a x-bit integer arithmetic with x being equal to or larger than FPANumDigitsVal+2, and / orwherein the encoder (10) is configured to represent the signifcand (121) using a signed x-bit integer representation (325) with x being equal to or larger than FPANumDigitsVal+2.

31. Encoder (10) of any previous claim 20 to 30, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), perform divisions by table look-up.

32. Encoder (10) of any previous claim 20 to 31, configured toin the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111’)in the floating-point representation (120), solve the linear equation system (113) using the Cramer’s rule.

33. Encoder (10) of any previous claim 20 to 32, configured toset-up the linear equation system (113) based on the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106) in the integer arithmetic with representing intermediate results using the integer representation (120),transfer the linear equation system (113) to the floating-point representation (120), and perform the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120).

34. Encoder (10) of any previous claim 20 to 33, configured tocompute a floating-point representation (120) of the already encoded portion (102*) of the first channel (105) and the corresponding portion (103) of the one or more second channels (106),set-up the linear equation system (113) based on the floating-point representation (120) of the already encoded portion (102*) of the first channel (105) and the corresponding portion (103’) of the one or more second channels (106) with representing intermediate results using the floating-point representation (120), andperform the solving the linear equation system (113) in the integer arithmetic with representing intermediate results using the floating-point representation (120).

35. Encoder (10) of any previous claim 20 to 34, whereinthe corresponding block (104) is co-located, or offset by a predetermined amount signaled in the data stream (16) relative, to the current block (101) and the corresponding portion (103) to the already encoded portion (102*) temporally and / or spatially.

36. Encoder (10) of any previous claim 20 to 35,wherein the multi-channel signal (14) is obtained by at least one of Electrocardiography, Electroencephalography, Electromyography or seismic measurement, and / or wherein the multi-channel digital signal is a bio-physiological waveform data such as an electroencephalography (EEG) signal, an electrocardiogram (ECG), or an electromyography (EMG) signal, or seismic waveform data.

37. Encoder (10) of any previous claim 20 to 36, configured toIn subjecting the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') to a conversion (130) from the floating-point representation (120) to the integer representation (325), derive the integer representation (325) by subject the significand (121) to a bit shift by an amount of bits set equaling an absolute value of the exponent (122).

38. Encoder (10) of any previous claim 20 to 37, configured toIn applying the inter-channel prediction on the current block (101) of a first channel (105) subject the sum over the scaled predictor (108) of the one or more second channels (106) and the offset (111) to bit shift to the right by s bits so as to obtain a scaled and offset inter-channel predictor (112), wherein s is a constant shift parameter which determines a numerical accuracy of the inter-channel prediction.

39. Method (670) for decoding a multi-channel (14) signal by block-based predictive decoding, comprisingapplying (671) an inter-channel prediction on a current block (101) of a first channel (105) byweighting (672, 107) a corresponding block (104) of each of a one or more second channels (106) using a scaling factor (109) for the respective second channel (106) to obtain a scaled inter-channel predictor (108) from each of the one or more second channels (106) andforming (673, 110) a sum over the scaled inter-channel predictor (108) of the one or more second channels (106) and an offset (111) so as to obtain a scaled and offset inter-channel predictor (112),determining (674) the scaling factor (109) for each of the one or more second channels (106) and the offset (111) by solving (674) a linear equation system (113) which minimizes a square prediction error when using the inter-channel prediction to predict an already decoded portion (102) of the first channel (105) from a corresponding portion (103) of the one or more second channels (106), andcorrecting (676, 115) the scaled and offset inter-channel predictor (112) using a prediction residual (117) decoded from a data stream (16),wherein the method (670) comprisesperforming the prediction, determination and the correction in an integer arithmetic, andsolve the linear equation system (113) bysolving (677) the linear equation system (113) in the integer arithmetic with representing intermediate results using a floating-point representation (120) which comprises a significand (121), an exponent (122) and a sign (123) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), andsubjecting (678) the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') to a conversion (130) from the floating-point representation (120) to an integer representation (325).

40. Method (780) for encoding a multi-channel signal (14) by block-based predictive encoding, comprisingapplying (781) an inter-channel prediction on a current block (101) of a first channel (105) byweighting (782) a corresponding block (104) of each of a one or more second channels (106) using a scaling factor (109) for the respective second channel (106) to obtain a scaled inter-channel predictor (108) from each of the one or more second channels (106) andforming (783) a sum over the scaled inter-channel predictor (108) of the one or more second channels (106) and an offset (111) so as to obtain a scaled and offset inter-channel predictor (112),determining (784) the scaling factor (109) for each of the one or more second channels (106) and the offset (111) by solving a linear equation system (113) which minimizes a square prediction error when using the inter-channel prediction to predict an already encoded portion (102*) of the first channel (105) from a corresponding portion (103) of the one or more second channels (106), andencoding (786) a prediction residual (117) for correcting (115) the scaled and offset interchannel predictor (112) into a data stream (16),wherein the method (780) comprisesperforming the prediction, determination and the encoding in an integer arithmetic, andsolve the linear equation system (113) bysolving (787) the linear equation system (113) in the integer arithmetic with representing intermediate results using a floating-point representation (120) which comprises a significand (121), an exponent (122) and a sign (123) to obtain the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') in the floating-point representation (120), andsubjecting (788) the scaling factor (109’) for each of the one or more second channels (106) and the offset (111') to a conversion (130) from the floating-point representation (120) to an integer representation (325).

41. Computer program for performing the method (670, 780) according to claim 39 or 40, when the computer program runs on a computer.

42. Data stream (16) having encoded therein a multi-channel signal (14) using the method (780) according to claim 40.

Citation Information

Patent Citations

  • Improved cross-component prediction for video coding

    WO2023239676A1