Encoder, decoder, method for encoding and method for decoding for predictive block-matching-offset coding for variable block sizes

By determining offset values based on block lengths, the method reduces bit transmission for offset information, improving coding efficiency in data streams with variable block sizes.

WO2026093487A1PCT designated stage Publication Date: 2026-05-07FRAUNHOFER GESELLSCHAFT ZUR FORDERUNG DER ANGEWANDTEN FORSCHUNG EV
View PDF 3 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 data coding methods are inefficient in handling variable block sizes, leading to unnecessary bit usage for transmitting offset information.

Method used

The use of block length information to determine offset values for variable block sizes, allowing for reduced bit transmission by encoding the deviation from the block length rather than the full offset value.

Benefits of technology

This approach reduces the bit rate required for transmitting offset information by utilizing the inherent block length information already present in the data stream, thereby enhancing coding efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2025081461_07052026_PF_FP_ABST
    Figure EP2025081461_07052026_PF_FP_ABST
Patent Text Reader

Abstract

An encoder (100) for encoding a signal into a data stream according to an embodiment is provided. The encoder (100) is configured to encode a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block. The encoder (100) is configured to encode a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block. Moreover, the encoder (100) is configured to encode the current block depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Encoder, Decoder, Method for Encoding and Method for Decoding for Predictive Block-Matching-Offset Coding for Variable Block Sizes

[0002] Description

[0003] The present invention relates to an encoder, a decoder, a method for encoding and a method for decoding for predictive block-matching-offset coding for variable block sizes, in particular, in Id (1 dimensional) waveform codecs.

[0004] Efficient coding of data is an important topic in the art. For example, the person skilled in the art is aware of entropy coding and of Huffman coding to reduce the amount of data in a transmission signal.

[0005] Moreover, in coding concepts a repetitive character of the data to be encoded may be employed, e.g., by using differential coding concepts. For example in video coding, I frames encoding the full data and P frames encoding difference data with respect to an I frame are known.

[0006] Nonetheless, it would be appreciated, if further improved concepts for coding data would be provided.

[0007] The object of the present invention is to provide improved coding concepts. The object of the present invention is solved by the subject-matter of the independent claims. Particular embodiments are provided in the dependent claims.

[0008] An encoder for encoding a signal into a data stream according to an embodiment is provided. The encoder is configured to encode a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length (a block size) depending on a number of the plurality of samples within the block. The encoder is configured to encode a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block. Moreover, the encoder is configured to encode the current block depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

[0009] Furthermore, a decoder for decoding a data stream having encoded therein a signal according to an embodiment is provided. The decoder is configured to decode the data stream to reconstruct a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block. The decoder is configured to decode an encoding of a current block of the plurality of blocks of the signal from the data stream using an offset value for the current block. Moreover, the decoder is configured to determine the offset value for the current block depending on the block length of one of the plurality of blocks.

[0010] Moreover, a data stream comprising an encoding of a signal according to an embodiment is provided. The data stream comprises an encoding of a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block. An encoding of a current block of the plurality of blocks of the signal in the data stream depends on an offset value for the current block. The offset value for the current block depends on the block length of one of the plurality of blocks.

[0011] Furthermore, a method for encoding a signal into a data stream according to an embodiment is provided. The method comprises encoding a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block. The method comprises encoding a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block. Encoding the current block is conducted depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

[0012] Moreover, a method for decoding a data stream having encoded therein a signal according to an embodiment is provided. The method comprises decoding the data stream to reconstruct a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block. The method comprises decoding an encoding of a current block of the plurality of blocks of the signal from the data stream using an offset value for the current block. Moreover, the method comprises determining the offset value for the current block depending on the block length of one of the plurality of blocks.

[0013] Furthermore, according to embodiments, a computer program for implementing one of the above-described methods when being executed on a computer or signal processor is provided. Moreover, computer programs are provided, wherein each of the computer programs is configured to implement one of the above-described methods when being executed on a computer or signal processor.

[0014] Embodiments employ the concept to rely on a block length, e.g., of variable length blocks for encoding an offset. As information on the block length will already be transmitted in the data stream, this information can be used to reduce the amount of bits needed to transmit offset information from an encoder to a decoder.

[0015] In the following, embodiments of the present invention are described in more detail with reference to the figures, in which:

[0016] Fig. 1 illustrates an encoder for encoding a signal into a data stream according to an embodiment.

[0017] Fig. 2 illustrates a decoder for decoding a data stream having encoded therein a signal according to an embodiment.

[0018] Fig. 3 illustrates a system according to an embodiment comprising the encoder of Fig. 1 and the decoder of Fig. 2.

[0019] Fig. 4 illustrates an encoder for encoding a multi-channel digital signal into a datastream as well as decoder for decoding the multi-channel digital signal from a datastream.

[0020] Fig. 5 depicts an illustration of block matching according to an embodiment with an offset.

[0021] Fig. 6 depicts a scenario of an embodiment, where a block length of a current block is equal to a block length of a previous block.

[0022] Fig. 7 depicts a scenario of an embodiment, where a block length of a current block is smaller than a block length of a previous block.

[0023] Fig. 8 depicts a scenario of an embodiment, where a block length of a current block is greater than a block length of a previous block with a valid offset value. Fig. 9 depicts a scenario of an embodiment, where a block length of a current block is greater than a block length of a previous block with an invalid offset value.

[0024] Fig. 1 illustrates an encoder 100 for encoding a signal into a data stream according to an embodiment.

[0025] The encoder 100 is configured to encode a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block.

[0026] The encoder 100 is configured to encode a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block.

[0027] Moreover, the encoder 100 is configured to encode the current block depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

[0028] The offset value may, e.g., relate to a time direction. Or, the offset value may, e.g., relate to a channel direction. Or, the offset value may, e.g., relate to both a time direction and a channel direction.

[0029] A time direction may, e.g., relate to samples of preceding and succeeding e.g., repetitive (or, e.g., periodic) parts of a channel of the signal and the respective samples therein.

[0030] A channel direction may, e.g., relate to preceding and succeeding channels of the signal. For example, a signal portion of the first channel may form the basis for reconstructing a signal portion of the third channel, and an offset value of e.g., -2 for the third channel may, e.g., indicate that the third channel may, e.g., be reconstructed using the first channel.

[0031] If, in addition, there is also an offset value with respect to time, the offset value may, e.g., comprise offset information with respect to the channel direction and offset information with respect to the time direction.

[0032] As already outlined, embodiments employ the concept to rely on a block length, e.g., of variable length blocks for encoding an offset value. As information on the block length will already be transmitted in the data stream, this information can be used to reduce the amount of bits needed to transmit offset information from an encoder to a decoder. For example, if a block length is either 16, 8, 20 or 12 bits long, the block length may, e.g., be transmitted in a two-bit block length information field. Then, an offset value, e.g., that is quite similar to the block length (e.g., block length - 4 < offset < block length + 4) can be encoded using the block length and using a three-bit field. Thus, instead of encoding the offset value as an integer between 0 and its maximum possible value (e.g., in the example, the maximum block length is 20 and the maximum possible offset value deviation is + 3, thus, the maximum offset value is 23 and 5 bits are needed for encoding an integer offset value between 0 and 23) only the deviation around the block length may, e.g., be encoded (here: an integer value between -3 and +3). This saves bit rate, as information on the block length is always available (e.g., may, e.g., always be transmitted) anyway.

[0033] According to an embodiment, the plurality of blocks may, e.g., exhibit a variable block length; and / or at least two of the plurality of blocks exhibit a different block length.

[0034] In an embodiment, the encoder 100 may, e.g., be configured to generate the data stream such that the offset value for the current block depends on the block length of the current block.

[0035] According to an embodiment, the encoder 100 may, e.g., be configured to encode the current block of the signal

[0036] by determining a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block, and by encoding the prediction residual within the data stream,

[0037] wherein the prediction of the current block depends on the offset value of the current block.

[0038] In an embodiment, the encoder 100 may, e.g., be configured to determine the prediction of the current block, such that all samples which are used for determining the prediction of the current block are located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks.

[0039] According to an embodiment, the encoder 100 may, e.g., be configured to apply a blockwise transform of a size of the block length of the current block to the prediction residual, by quantizing transform coefficients to obtain resulting quantization indices, by entropy encoding the resulting quantization indices to obtain entropy-encoded quantization indices, and by generating the data stream such that the data stream comprises the entropy-encoded quantization indices. In an embodiment, the encoder 100 may, e.g., be configured to determine a total offset value for the current block, which indicates how many sample locations are to be shifted to obtain the prediction of the current block.

[0040] According to an embodiment, the encoder 100 may, e.g., be configured to determine a total offset value for the current block such that the total offset value for the current block represents a sum of the block length of the current block and at least one non-negative integer value (e.g., offsetValFirst, offsetValSecond), wherein the at least one non-negative integer value is the offset value (e.g., offsetValFirst) for the current block, or is the offset value (e.g., offsetValFirst) for the current block and one or more additional offset values (e.g., offsetValSecond) for the current block.

[0041] In an embodiment, the encoder 100 may, e.g., be configured to determine a total offset value for the current block as a sum of the offset for the current block and the block length of the current block (e.g., totalOffsetValFirst = offsetValFirst + blockSize).

[0042] According to an embodiment, the encoder 100 may, e.g., be configured to generate the data stream such that the data stream comprises a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference.

[0043] In an embodiment, the encoder 100 may, e.g., be configured to determine a total offset value for the current block depending on a total offset value totalOffsetValFirstPred of a previous block of the plurality of blocks as

[0044] n · totalOffsetValFirstPred ≥ bsCurr

[0045] wherein bsCurr indicates the block length of the current block.

[0046] According to an embodiment, n may, e.g., indicate a real number.

[0047] In an embodiment, n may, e.g., indicate a non-negative value.

[0048] According to an embodiment, n may, e.g., indicate a value that is not an integer value.

[0049] In an embodiment, n may, e.g., indicate an integer value. According to an embodiment, n may, e.g., indicate a non-negative value that is not an integer value.

[0050] In an embodiment, n may, e.g., indicate a non-negative integer value.

[0051] According to an embodiment, n is defined as

[0052]

[0053] In an embodiment, n is defined as

[0054] n(bsCurr, bsFirstPred) > 2 log2 bsCurr) — log2 bsFirstPred)

[0055] wherein bsCurr indicates the block length of the current block, and wherein bsFirstPred indicates the block length of a previous block of the plurality of blocks.

[0056] According to an embodiment, n is defined as

[0057]

[0058] where log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports; where log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block.

[0059] In an embodiment, n is defined as

[0060] n^bsCurr, bsFirstPred) = n(bsCurr) = 2log2MaxValBS~log2MinValBS

[0061] where log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports; where log2MaxValBS is a maximum value for the 2-logarithm of the block size that the employed codec supports.

[0062] In an embodiment, n is defined as

[0063]

[0064] wherein bsCurr indicating the block length of the current block; wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks.

[0065] According to an embodiment, the encoder 100 may, e.g., be configured to determine a total offset value for the current block as

[0066] totalOff setValFirstPred « (log2BSCurr — log2BSPred)

[0067] wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks, wherein log2BSCurr indicates log2(JjsCurr') with bsCurr indicating the block length of the current block, and wherein log2BSPred indicates log2 bsFirstPred) with bsFirstPred indicating the block length of the previous block.

[0068] In an embodiment, the encoder 100 may, e.g., be configured to determine the offset value for a block of a plurality of blocks of a first channel of a plurality of channels using an offset value for a block of a plurality of blocks of a previous channel of the plurality of channels.

[0069] According to an embodiment, the encoder 100 may, e.g., be configured to determine the offset value for a previous block of the plurality of blocks of the first channel using an offset value for a previous block of the plurality of blocks of the previous channel.

[0070] In an embodiment, the encoder 100 may, e.g., be configured to employ entropy encoding to encode the offset of the current block or a value derived from the offset of the current block into the data stream.

[0071] According to an embodiment, the encoder 100 may, e.g., be configured to generate the data stream such that the data stream comprises information on the block length of the current block.

[0072] In an embodiment, the encoder 100 may, e.g., be configured to generate the data stream such that the data stream comprises information on the block length of each of the plurality of blocks.

[0073] According to an embodiment, the encoder 100 may, e.g., be configured to generate the data stream such that the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

[0074] In an embodiment, said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

[0075] According to an embodiment, the signal may, e.g., be a periodic signal.

[0076] In an embodiment, the encoder 100 may, e.g., be configured to encode each block of two or more blocks of the plurality of blocks using an offset value for said block. The offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

[0077] According to an embodiment, the encoder 100 may, e.g., be configured to encode a plurality of samples of each block of the plurality of blocks of the signal into the data stream. The encoder 100 may, e.g., be configured to encode a sample of the current block depending on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depending on the offset value for said current block.

[0078] In an embodiment, said sample of the current block may, e.g., be a first sample of the current block. The encoder 100 may, e.g., be configured to encode the first sample of the current block depending on

[0079]

[0080] wherein

[0081]

[0082] indicates the first sample of the current block or a value depending on the first sample of the current block,

[0083] r7 f

[0084] wherein " -L“K r 1indicates a previous sample preceding the first sample of the current block in the signal, wherein k is an index identifying a Zr-th block among the plurality of blocks, wherein Sk indicates a position of a first sample of the Zr-th block within the signal, wherein h indicates a block length of the Zr-th block, wherein trindicates the offset value for the current block, wherein m indicates a channel among one or more channels. According to an embodiment, the encoder 100 may, e.g., be configured to determine the offset value for the current block from an offset value for a previous block of the plurality of blocks.

[0085] In an embodiment, if lk< lj, the encoder 100 may, e.g., be configured to determine the offset value for the current block trfrom the offset value t. of the previous block as:

[0086]

[0087] wherein ljindicates a block length of the previous block, wherein lkindicates the block length of the current block.

[0088] According to an embodiment, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the encoder 100 may, e.g., be configured to determine an offset value for the subsequent block depending on:

[0089]

[0090] wherein k is an index indicating the current block, wherein i is an index offset, such that k + i indicates the subsequent block, wherein bkindicates the block length of the current block, wherein bk+iindicates the block length of the subsequent block, wherein Lkindicates the offset value for the current block, and wherein Lk+iindicates the offset value for the subsequent block.

[0091] In an embodiment, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the encoder 100 may, e.g., be configured to determine an offset value for the subsequent block depending on:

[0092]

[0093] wherein k is an index indicating the current block, wherein i is an index offset, such that k + i indicates the subsequent block, wherein bkindicates the block length of the current block, wherein bk+iindicates the block length of the subsequent block, wherein Lkindicates the offset value for the current block, and wherein Lk+iindicates the offset value for the subsequent block, wherein ≫ indicates a right shift operation by an integer number of bits.

[0094] According to an embodiment, the signal comprises one or more channels. Each block of the plurality of blocks may, e.g., be a block of one of the one or more channels of the signals. The encoder 100 may, e.g., be configured to encode the one or more channels into the data stream.

[0095] In an embodiment, the one or more channels comprise at least two channels. The encoder 100 may, e.g., be configured to encode the at least two channels into the data stream.

[0096] According to an embodiment, the encoder 100 may, e.g., be configured to encode the one or more channels into the data stream using intra channel prediction.

[0097] In an embodiment, the signal may, e.g., be a waveform signal, for example, a biomedical waveform signal.

[0098] According to an embodiment, the signal may, e.g., be a video signal.

[0099] In an embodiment, the signal may, e.g., be an audio signal.

[0100] Fig. 2 illustrates a decoder 200 for decoding a data stream having encoded therein a signal according to an embodiment.

[0101] The decoder 200 is configured to decode the data stream to reconstruct a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block.

[0102] The decoder 200 is configured to decode an encoding of a current block of the plurality of blocks of the signal from the data stream using an offset value for the current block.

[0103] Moreover, the decoder 200 is configured to determine the offset value for the current block depending on the block length of one of the plurality of blocks.

[0104] According to an embodiment, the plurality of blocks may, e.g., exhibit a variable block length; and / or at least two of the plurality of blocks exhibit a different block length. In an embodiment, the offset value for the current block depends on the block length of the current block.

[0105] According to an embodiment, the decoder 200 may, e.g., be configured to reconstruct the current block by determining from the data stream a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block which depends on the offset value for the current block, and by reconstructing the current block of the signal using the prediction of the current block and using the prediction residual of the current block.

[0106] In an embodiment, the decoder 200 may, e.g., be configured to determine the prediction of the current block, such that all samples which are used for determining the prediction of the current block are located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks.

[0107] According to an embodiment, the decoder 200 may, e.g., be configured to decode the data stream by entropy decoding and reconstructing quantization indices being encoded within the data stream, and by applying an inverse transform using the quantization indices to determine the prediction residual of the current block.

[0108] In an embodiment, the decoder 200 may, e.g., be configured to determine a total offset value, which indicates how many sample locations are to be shifted to obtain the prediction of the current block.

[0109] According to an embodiment, the decoder 200 may, e.g., be configured to determine a total offset value for the current block such that the total offset value for the current block represents a sum of the block length of the current block and at least one non-negative integer value (e.g., offsetValFirst, offsetValSecond), wherein the at least one non-negative integer value is the offset value (e.g., offsetValFirst) for the current block, or is the offset value (e.g., offsetValFirst) for the current block and one or more additional offset values (e.g., offsetValSecond) for the current block.

[0110] In an embodiment, the decoder 200 may, e.g., be configured to determine a total offset value for the current block as a sum of the offset for the current block and the block length of the current block (e.g., totalOffsetValFirst = offsetValFirst + blockSize).

[0111] According to an embodiment, the data stream comprises a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference. The decoder 200 may, e.g., be configured to determine the offset for the current block from the offset of the previous block and from said difference being comprised by the data stream.

[0112] In an embodiment, the decoder is configured to reconstruct the current block by conducting:

[0113] o initialize variables offsetValFirstPred and offsetValSecondPred (for example by zero);

[0114] o if block-matching prediction is to be carried out on the current block, decode differences offsetValFirstDiff and offsetValSecondDiff from the data stream;

[0115] o set the current offset values to

[0116] offsetValFirst = offsetValFirstPred + offsetValFirstDiff offsetValSecond = offsetValSecondPred + offsetValSecondDiff; where the second assignment is carried out only in case of multi-hypothesis block matching prediction;

[0117] o perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond;

[0118] o update the prediction offset parameters to

[0119] offsetValFirstPred = offsetValFirst,

[0120] offsetValSecondPred = offsetValSecond (if applicable).

[0121] According to an embodiment, the decoder is configured to reconstruct the current block by conducting:

[0122] o initialize variables offsetValFirstPred and offsetValSecondPred (for example by zero);

[0123] o initialize block size variables bSFirstPred and bSSecondPred (for example by zero);

[0124] o if block-matching prediction is to be carried out on the current block, decode differences offsetValFirstDiff and offsetValSecondDiff from the data stream (where only the first is decoded if a single-hypothesis block matching is to be carried out);

[0125] o set current offset value offsetValFirst according to a following rule that invokes prediction block size (bsFirstPred) and the current block size (bsCurr):

[0126] offsetValFirst = offsetValFirstPred + bsFirstPred − bsCurr + offsetValFirstDiff

[0127] o if applicable, do the same for the second hypothesis;

[0128] o perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond o update the prediction offset parameters to

[0129] offsetValFirstPred = offsetValFirst, offsetValSecondPred = offsetValSecond (if applicable) o update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,

[0130] bsSecondPred = bsCurr (if applicable).

[0131] In an embodiment, the decoder 200 may, e.g., be configured to determine a total offset value for the current block depending on a total offset value totalOffsetValFirstPred of a previous block of the plurality of blocks as

[0132] n · totalOffsetValFirstPred ≥ bsCurr

[0133] wherein bsCurr indicates the block length of the current block.

[0134] According to an embodiment, n may, e.g., indicate a real number.

[0135] In an embodiment, n may, e.g., indicate a non-negative value.

[0136] According to an embodiment, n may, e.g., indicate a value that is not an integer value.

[0137] In an embodiment, n may, e.g., indicate an integer value.

[0138] According to an embodiment, n may, e.g., indicate a non-negative value that is not an integer value.

[0139] In an embodiment, n may, e.g., indicate a non-negative integer value.

[0140] According to an embodiment, the decoder is configured to reconstruct the current block by conducting:

[0141] o initialize the variables offsetValFirstPred and offsetValSecondPred (for example by zero);

[0142] o initialize the block size variables bSFirstPred and bSSecondPred (for example by zero);

[0143] o if block-matching prediction is to be carried out on the current block, decode the differences offsetValFirstDiff and offsetValSecondDiff from the bit-stream (where only the first is decoded if a single-hypothesis block matching is to be carried out);

[0144] o set totalOffsetValFirstPred = offsetValFirstPred + bsFirstPred

[0145] o if totalOffsetValFirstPred > bsCurr, then set

[0146] offsetValFirst = totalOffsetValFirstPred − bsCurr + offsetValFirstDiff

[0147] o if totalOffsetValFirstPred < bsCurr, then set

[0148] offsetValFirst = n(bsCurr, bsFirstPred) · totalOffsetValFirstPred − bsCurr + offsetValFirstDiff,

[0149] where n(—, — ) is a fixed predetermined function such that

[0150] n(bsCurr, bsFirstPred) · totalOffsetValFirstPred > bsCurr.

[0151] o if applicable, do the same for the second hypothesis

[0152] o perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond

[0153] o update the prediction offset parameters to

[0154] offsetValFirstPred = offsetValFirst,

[0155] offsetValSecondPred = offsetValSecond (if applicable);

[0156] o update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,

[0157] bsSecondPred = bsCurr (if applicable).

[0158] In an embodiment, n is defined as

[0159] bsCurr

[0160] n(bsCurr, bsFirstPred) = ceil

[0161] totalOffsetValFirstPred

[0162] According to an embodiment, n is defined as

[0163] n(bsCurr, bsFirstPred) = 2log2(bsCurr) − log2(bsFirstPred)

[0164] wherein bsCurr indicates the block length of the current block, and wherein bsFirstPred indicates the block length of a previous block of the plurality of blocks.

[0165] In an embodiment, n is defined as

[0166]

[0167] where log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports; where log2BSCurr indicates log2 bsCurr) with bsCurr indicating the block length of the current block.

[0168] According to an embodiment, n is defined as

[0169] n(bsCurr, bsFirstPred) = n(bsCurr) = 2log2MaxValBS−log2MinValBS

[0170] where log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports; where log2MaxValBS is a maximum value for the 2-logarithm of the block size that the employed codec supports.

[0171] In an embodiment, n is defined as

[0172]

[0173] wherein bsCurr indicating the block length of the current block; wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks.

[0174] According to an embodiment, the decoder 200 may, e.g., be configured to determine a total offset value for the current block as

[0175] totalOffsetValFirstPred « (log2BSCurr — log2BSPred)

[0176] wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks, wherein log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block, and wherein log2BSPred indicates log2 bsFirstPred) with bsFirstPred indicating the block length of the previous block.

[0177] In an embodiment, the decoder 200 may, e.g., be configured to determine the offset value for a block of a plurality of blocks of a first channel of a plurality of channels using an offset value for a block of a plurality of blocks of a previous channel of the plurality of channels. According to an embodiment, the decoder 200 may, e.g., be configured to determine the offset value for a previous block of the plurality of blocks of the first channel using an offset value for a previous block of the plurality of blocks of the previous channel.

[0178] In an embodiment, the decoder 200 may, e.g., be configured to employ entropy decoding to decode the offset of the current block or a value derived from the offset of the current block from the data stream.

[0179] According to an embodiment, the decoder 200 may, e.g., be configured to obtain information on the block length of the current block from the data stream.

[0180] In an embodiment, the decoder 200 may, e.g., be configured to obtain information on the block length of each of the plurality of blocks from the data stream.

[0181] According to an embodiment, the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

[0182] In an embodiment, said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

[0183] According to an embodiment, the signal may, e.g., be a periodic signal.

[0184] In an embodiment, the decoder 200 may, e.g., be configured to reconstruct each block of two or more blocks of the plurality of blocks using an offset value for said block. The offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

[0185] According to an embodiment, each block of the plurality of blocks of the signal comprises a plurality of samples. The decoder 200 may, e.g., be configured to decode an encoding of a sample of the current block depending on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depending on the offset value for said current block.

[0186] In an embodiment, said sample of the current block may, e.g., be a first sample of the current block. The decoder 200 may, e.g., be configured to decode an encoding of the first sample of the current block depending on

[0187]

[0188] wherein

[0189]

[0190] indicates a prediction of the first sample of the current block or a value depending on the first sample of the current block,

[0191] ..

[0192] wherein

[0193]

[0194] indicates a previous sample preceding the first sample of the current block in the signal,

[0195] wherein k is an index identifying a &-th block among the plurality of blocks, wherein skindicates a position of a first sample of the &-th block within the signal, wherein lkindicates a block length of the &-th block, wherein trindicates the offset value for the current block, wherein m indicates a channel among one or more channels.

[0196] According to an embodiment, the decoder 200 may, e.g., be configured to determine the offset value for the current block from an offset value for a previous block of the plurality of blocks.

[0197] In an embodiment, if lk< lj, the decoder 200 may, e.g., be configured to determine the offset value for the current block trfrom the offset value t. of the previous block as:

[0198]

[0199] wherein ljindicates a block length of the previous block, wherein lkindicates the block length of the current block.

[0200] According to an embodiment, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the decoder 200 may, e.g., be configured to determine an offset value for the subsequent block depending on:

[0201]

[0202] wherein k is an index indicating the current block, wherein i is an index offset, such that k + i indicates the subsequent block, wherein bkindicates the block length of the current block, wherein bk+iindicates the block length of the subsequent block, wherein Lkindicates the offset value for the current block, and wherein Lk+iindicates the offset value for the subsequent block. In an embodiment, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the decoder 200 may, e.g., be configured to determine an offset value for the subsequent block depending on:

[0203]

[0204] wherein k is an index indicating the current block, wherein i is an index offset, such that k + i indicates the subsequent block, wherein bkindicates the block length of the current block, wherein bk+iindicates the block length of the subsequent block, wherein Lkindicates the offset value for the current block, and wherein Lk+iindicates the offset value for the subsequent block, wherein ≫ indicates a right shift operation by an integer number of bits.

[0205] According to an embodiment, the signal comprises one or more channels. Each block of the plurality of blocks may, e.g., be a block of one of the one or more channels of the signals. The decoder 200 may, e.g., be configured to decode an encoding of the one or more channels from the data stream.

[0206] In an embodiment, the one or more channels comprise at least two channels. The decoder 200 may, e.g., be configured to decode an encoding of the at least two channels from the data stream.

[0207] According to an embodiment, the decoder 200 may, e.g., be configured to decode the encoding of the one or more channels from the data stream using intra channel prediction.

[0208] In an embodiment, the signal may, e.g., be a waveform signal, for example, a biomedical waveform signal.

[0209] According to an embodiment, the signal may, e.g., be a video signal.

[0210] In an embodiment, the signal may, e.g., be an audio signal.

[0211] Fig. 3 illustrates a system according to an embodiment. The system comprises an encoder 100 according to one of the above-described embodiments for encoding a signal (e.g., an original signal ) into a data stream.

[0212] Moreover, the system comprises a decoder 200 according to one of the above-described embodiments for decoding the data stream to reconstruct the signal (e.g., to obtain a reconstructed signal).

[0213] Moreover, a data stream comprising an encoding of a signal according to an embodiment is provided.

[0214] The data stream comprises an encoding of a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block.

[0215] An encoding of a current block of the plurality of blocks of the signal in the data stream depends on an offset value for the current block.

[0216] The offset value for the current block depends on the block length of one of the plurality of blocks.

[0217] According to an embodiment, the plurality of blocks may, e.g., exhibit a variable block length; and / or at least two of the plurality of blocks exhibit a different block length.

[0218] In an embodiment, the offset value for the current block depends on the block length of the current block.

[0219] According to an embodiment, the current block of the signal may, e.g., be encoded into the data stream

[0220] by determining a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block, and by encoding the prediction residual within the data stream,

[0221] wherein the prediction of the current block depends on the offset value of the current block.

[0222] In an embodiment, all samples which are used for determining the prediction of the current block may, e.g., be located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks. According to an embodiment, the data stream may, e.g., comprise the entropy-encoded quantization indices being generated by applying a blockwise transform of a size of the block length of the current block to the prediction residual, by quantizing transform coefficients to obtain resulting quantization indices, and by entropy encoding the resulting quantization indices to obtain the entropy-encoded quantization indices.

[0223] In an embodiment the data stream may, e.g., comprise a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference.

[0224] According to an embodiment, the offset of the current block or a value derived from the offset of the current block may, e.g., be entropy encoded into the data stream.

[0225] According to an embodiment, the data stream comprises information on the block length of the current block.

[0226] In an embodiment, the data stream comprises information on the block length of each of the plurality of blocks.

[0227] According to an embodiment, the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

[0228] In an embodiment, said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

[0229] According to an embodiment, the signal may, e.g., be a periodic signal.

[0230] In an embodiment, the data stream comprises an encoding of each block of two or more blocks of the plurality of blocks depending on an offset value for said block. The offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

[0231] According to an embodiment, the data stream comprises an encoding of a plurality of samples of each block of the plurality of blocks of the signal. An encoding of a sample of the current block depends on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depends on the offset value for said current block.

[0232] In an embodiment, said sample of the current block may, e.g., be a first sample of the current block. The encoding of the first sample of the current block depends on

[0233]

[0234] wherein

[0235]

[0236] indicates the first sample of the current block or a value depending on the first sample of the current block,

[0237] ...

[0238] wherein

[0239]

[0240] indicates a previous sample preceding the first sample of the current block in the signal,

[0241] wherein k is an index identifying a k-th block among the plurality of blocks, wherein skindicates a position of a first sample of the k-th block within the signal, wherein lkindicates a block length of the k-th block, wherein trindicates the offset value for the current block, wherein m indicates a channel among one or more channels.

[0242] According to an embodiment, the offset value for the current block depends on an offset value for a previous block of the plurality of blocks.

[0243] In an embodiment, if lk< lj, the offset value for the current block trdepends on the offset value trjof the previous block according to:

[0244]

[0245] wherein ljindicates a block length of the previous block, wherein lkindicates the block length of the current block.

[0246] According to an embodiment, the signal comprises one or more channels. Each block of the plurality of blocks may, e.g., be a block of one of the one or more channels of the signals. The data stream comprises an encoding of the one or more channels.

[0247] In an embodiment, the one or more channels comprise at least two channels. The data stream comprises an encoding of the at least two channels. According to an embodiment, the encoding of the one or more channels in the data stream depends on intra channel prediction.

[0248] In an embodiment, the signal may, e.g., be a waveform signal, for example, a biomedical waveform signal.

[0249] According to an embodiment, the signal may, e.g., be a video signal.

[0250] In an embodiment, the signal may, e.g., be an audio signal.

[0251] The above description is extended in the following by the presentation of further embodiments. Before this, however, the description proceeds with a presentation of a possible framework or codec into which the embodiments described above as well as the embodiments described further below may be built into. Many details described in this framework are, however, optional when being combined with any of the above or subsequently described embodiments. To be more precise, the framework is described with respect to Fig. 4 which shows an encoder for encoding a multi-channel digital signal 14 into a datastream 16 as well as decoder 12 for decoding the multi-channel digital signal 14 from datastream 16. This description of Fig. 4 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. 4 either by adopting all details / functionalities described with respect to Fig. 4 or with leaving-out some of the details / functionalities described with respect to Fig. 4. Sometimes such “optional” features of Fig. 4 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. 4 shall not be restricted to the these explicitly identified variations of Fig. 4 in terms of leaving-out certain features.

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

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

[0254] Fig. 4 illustrates the option according to which signal 14 is not coded directly, i.e., in the original domain 26, but in a so-called “coded domain” 28 which might differ from the original domain 26 by one or more of 1) channel transformation, 2) channel permutation and 3) temporal mutual channel alignment. The channel transformation, if applied, transforms, per sample time instant, a set or column 24 of samples from domain 26 to domain 28. Thus, in domain 28, the sample pitch and the time axis is the same as in domain 26, but the meaning of the channels is different, i.e., the “source” channels of domain 26 become transformed channels in domain 28. Accordingly, the vertical axis in Fig. 4 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. The module in encoder 10 performing the one or more of channel transformation, channel permutation and temporal mutual alignment is indicated in Fig. 4 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.

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

[0256] 4 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. 4, 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.

[0257] The actual coding is done in units of so-called temporal blocks 30. The term “block” or “temporal block” 30 is used so as to denote both a temporal portion of the multi-channel signal in domain 28, i.e., the set of coded channels, as well as a temporal portion of a certain coded channel. That is, for each temporal block 30, each coded channel has a temporal block such as block 140 depicted for some temporal block 30c and same are mutually co-located. The coding is done sequentially along these blocks 140, by following a coding / decoding order, which traverses the blocks 140 temporal block 30 by temporal block 30 with traversing temporally co-located blocks of the coded channels along a channel order corresponding to the order of the coded channels along axis 32. This coding / decoding order is illustrated in Fig. 4 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. 4 by way of shading. In this regard, note that in Fig.

[0258] 4, merely one temporal block 140 has been illustrated explicitly in order to reduce the complexity of Fig. 4. 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. 4, 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.

[0259] 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 datastream 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 datastream 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. 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.

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

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

[0262] 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. 4. 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.

[0263] 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. 4. 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.

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

[0265] 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. 4. 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. 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.

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

[0267] 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. 4. 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.

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

[0269] The transform coefficients might be encoded by quantization, i.e. they may be quantized with the quantized coefficients then being coded in the datastream 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 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.

[0270] In order to control the quantization noise, the transform coefficients might be subject to noise shaping. Spectral noise shaping may be used to shape the quantization noise spectrally. This may be done by signaling in the data stream spectral-band scale factors, i.e. a scale factor per spectral band, which represent a transfer function of a spectral filter which approximates the spectral envelope of the signal within the current block 140 (or its prediction residual, respectively), or signaling filter coefficients defining a temporal filter having a filter transfer function which approximates the spectral envelope of the signal within the current block 140 (or its prediction residual, respectively). On encoder side, spectral noise shaping may be applied in spectral domain by multiplying an inverse of scale factors, either directly signaled in the data stream or derivable from the filter coefficients by filter-to-factor conversion, with the transform coefficients before quantization. That is, at encoder, the coefficients are shaped by the inverse of the spectral envelope. At decoder side, spectral shaping may be applied in spectral domain by multiplying scale factors, either directly signaled in the data stream or derived from the filter coefficients by filter-to-factor conversion, with the transform coefficients, with then. That is, at decoder, the coefficients are shaped by the spectral envelope before applying retransformation. Additionally or alternatively, temporal noise shaping might be applied. To this end, TNS filter coefficients might be determined and signaled by the encoder. The TNS filter coefficients may represent a transfer function which approximates the temporal envelope of the current block 140 (or its residual signal). The encoder may apply TNS filtering using the filter coefficients by spectrally filtering the possibly spectrally shaped transform coefficients so as to filter them with a transfer function corresponding to an inverse of the temporal envelope. The TNS filter coefficients might be derived by linear prediction analysis of the possibly spectrally shaped transform coefficients so as to derive a linear prediction filter, then used as TNS filter, which minimizes a prediction residual when spectrally applied on the possibly spectrally shaped transform coefficients. At the encoder, the TNS filtered coefficients are then quantized and entropy coded. At decoder side, the inverse takes place: the possibly spectrally shaped transform coefficients are inversely TNS filtered before applying retransformation. Additionally or alternatively, noise filling might be used. The filling may be applied to zero-quantized portions of the spectrum and controlled by the encoder via corresponding noise filling parameters.

[0271] 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 by performed frame wise. That is, in each channel, the sequence of blocks 140 may be partitioned into immediately consecutive blocks 140, which form frames. This partitioning may be equal among the channels so that, again, a frame denotes both a temporal portion within each channel individually, as well as a temporal portion of the multi-channel signal, i.e. a collection of temporally aligned frames. Within each frame, the sequence of blocks 140 are CABAC en / decoded with once initializing the contexts and resetting the internal CABAC state at the beginning and then updating the contexts’ probabilities during en / decoding the respective frame. That is, blocks 140 are CABAC decodable merely in units of frames. The context initialization might be done independent from previous frames, or depending on the contexts as manifesting itself at the end of, of during, the en / decoding a previous frame. 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.

[0272] 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 coded into the data stream en block in a transform domain or sample-wise in time domain.

[0273] 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 bitstream. Additionally, it might optionally (i.e. indicated by some information in the bitstream) 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.

[0274] A final note shall be made with respect to the juxtaposition of frames, blocks 140, channels and channel groups and regarding decoding order. The description above already described the fact that the channels might be grouped into channel group with each channel group being coded independently from each other, meaning that the blocks 140 in a certain channel group are coded without dependencies from channels outside their channel group. The decoding order 60, thus, would traverse the channels channel-group individually, channel group by channel group. Within each channel group, the blocks 140 are traversed as described: all temporally aligned blocks 140 of all channels fist, then proceeding with the next blocks 140 and so forth. A frame may have a sequence of blocks of a channel group encoded thereinto along the mentioned decoding order order, such as n temporally consecutive blocks 140 for all channels of a channel group. IF the channel group had m channels, m*n blockl04 would, thus, be coded into the frame. As mentioned, there might be dependent frames, for which the CABAC contexts are adopted from the preceding frame of the same channel group, i.e. the one having encoded the immediately preceding block 140. For such dependent frames, not only CABAC contexts may be adopted from the preceding frame, but it may also be allowed to allow for prediction from the preceding frame to the dependent frame. Prediction, and possibly also any coding dependencies, towards channels outside the channel group and, within the channel group, towards frames temporally preceding the mostly recently previously en / decoded independent frame would be disallowed. Thus, each tile shown in Fig. 4 by bold lines may represent a sequence of an independent frame flowed by zero, one or more dependent frames.

[0275] As mentioned before, Fig. 4 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. 4, and some of these modifications might be mentioned in the subsequent description with respect to certain ones of the subsequently described embodiments, but these modifications shall then be treated as being also applicable with respect to other ones of the subsequently described embodiments.

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

[0277] At first, particular examples are provided to enhance the understanding of the present invention.

[0278] Fig. 5 depicts an illustration of block matching according to an embodiment with an offset

[0279] In a particular embodiment, a ID signal (e.g. biomedical waveform signal) with a fixed number of channels and samples per channel may, e.g., be considered. Each channel may, e.g., be divided in n blocks. For a block k with k E {0, 1,..., n- 1} the starting position is skand lkis the length of the block. Let x[m][i] with i E {sk,...,sk+ lk— 1} denote the samples values for a block k of a channel m that are to be transmitted and let y[m][i] denote the reconstructed samples values with i E {0,..., sk- 1}.

[0280] Given that sk> lk, intra channel prediction may, e.g., be employed. Here, a prediction signal pred[i], i E {0,..., lk— 1} using reconstructed samples y[m][i] may, e.g., be generated as depicted in Fig. 5. The offset trmay, e.g., be defined as trE {0, 1,...,sk— lk}. Then, the prediction for the first element of the block equals

[0281]

[0282] The distance dist sk, predprp between the original samples of the current block x[m] [sk+ j] and the prediction pred(tr) [ / ] with j E {0, 1,..., lk— 1} is

[0283] dist(sk.pred(tr)) lk + tr

[0284] (2)

[0285] Let Sj, j < fc be a previous block with length lj in channel m that also used intra channel prediction with an offset trJ. If it is assumed that the signal has a underlying periodicity, one can infer

[0286]

[0287] Thus, the previous offset trJcan be used as a prediction for the current offset tr. There are three possibilities how the block lengths lkand lj are related, which are described in the following:

[0288] First possibility: lk= lj:

[0289] Fig. 6 depicts a scenario of an embodiment, where a block length lkof a current block is equal to a block length lj of a previous block. In Fig. 6, lk= lj.

[0290] The predicted tris t. as

[0291]

[0292] Second possibility: lk< lj:

[0293] Fig. 7 depicts a scenario of an embodiment, where a block length lkof a current block is smaller than a block length lj of a previous block. In Fig. 7, lk< lj.

[0294] As both equations lj + trJ— lk> 0 and lj + tr]— lk< sk— lkare true for all possible values of tr], the prediction for tris lj + trJ— lkwith

[0295] dist(sk^pred(tr)) = + tr

[0296] = lk + lj + tJr— lk = dist(sj,pred(jtJr)).

[0297] (5)

[0298] Third possibility: lk> lj:

[0299] With as trJdefined above, the equation lj + trJ— lk< sk— lkis always true.

[0300] If lj + trJ— lk> 0 is true, then lj + trJ— lkcan be used as the prediction for tr.

[0301] Fig. 8 depicts a scenario of an embodiment, where a block length lkof a current block is greater than a block length lj of a previous block with a valid offset value. In Fig. 8, lk> lj wherein trJis valid.

[0302] Otherwise, if lj + t]. — lk> 0 is not true (lj + trJ— lk< 0 is true), the smallest positive integer n is searched with n * lj + t^) — lk> 0, which is

[0303]

[0304] Then, two cases can happen: The equation n * lj + trJ) — lk< sk— lkis true. In that case, n * (lj + t^) — lkis used as the prediction for tr. That means

[0305] d st(sfc,pred(tr)) = lk + tr

[0306]

[0307] In case n * (Zy + trJ) — lk> sk— lk, then tris set to 0 or to some maximum value greater than 0.

[0308] Additionally, other positive values for n are also possible. For example, if fractional positions are allowed for the offset (e.g., by using half pel interpolation filters) fractional n might also be allowed.

[0309] Fig. 9 depicts a scenario of an embodiment, where a block length of a current block is greater than a block length of a previous block with an invalid offset value. In Fig. 9, lk> lj wherein trJis invalid.

[0310] The above description of a particular embodiment is focused on a block matching predictive coding approach in which the prediction signal is directly derived from a previous portion of the given channel signal, e.g., a prediction in time direction.

[0311] In another embodiment, the same kind of prediction, with the same proposed optimizations for efficient signaling of the prediction "offset" parameter, may be realized in channel instead of time direction. In other words, the prediction signal may be directly derived from a (temporally collocated or preceding, typically reconstructed) portion of the waveform data in a different channel than the one for which said prediction signal is constructed. Here, said different channel may also be identified by an offset parameter to be signaled (more specifically, a channel offset relative to the channel for which said prediction signal is constructed), with the very same proposed optimizations for efficient signaling of this "channel offset" parameter.

[0312] In the following, more details of embodiments of the present invention are described to enhance the understanding of embodiments that relate to coding of block-matching offsets.

[0313] At first, a setup of block-matching prediction is described.

[0314] The present application deals with the coding of biomedical and general waveform data. More precisely, the technology of block matching prediction with coded offsets is concerned. In general terms, this works as follows:

[0315] A waveform signal X[c] [i] is to be coded, where c denotes the channel index and i denotes the sample index. The signal is partitioned into consecutive blocks of samples. Each block is determined by a start index iStart and an end index iEnd and consists of all samples X[c][i] with iStart<=i<iEnd. It is assumed that for a given block, the samples X[c][i] with i<iStart are already coded.

[0316] Let Y[c][i] denote the reconstructed samples, i<iStart. Let bSCurr = iEnd — iStart denote the current block size. Then the block-matching prediction generates a prediction signal pred on the current block depending on a transmitted offset value offsetValFirst>=0 as

[0317]

[0318] In a variant, the signal Y[c][iStart - blockSizeCurr-offsetValFirst+ j ] may also be filtered by a full-pel or a half-pel interpolation filter. In the latter scenario, let Y denote the half-pel filtered version of the reconstructed signal Y. Then every second sample of Y equals the corresponding sample of Y, while every other second sample of Y is an interpolated sample generated out of Y by a fixed half-pel interpolation filter.

[0319] In another variant, the prediction signal may be generated by a superposition of multiple block matching prediction signals. Here, the case of two hypotheses is treated while the case of more than two hypotheses works similarly. In this case, a flag is signaled in the bitstream that indicates whether the multi-hypothesis prediction is used or not. If the multihypothesis prediction is used, two offset values offsetValFirst>=0 and offsetValSecond>=0 are to be transmitted. Then the prediction is generated as

[0320] pred [c] [iStart + j] = a • K[c] [iStart - bSCurr — offsetValFirst + j ] +

[0321] f> • K[c] [iStart - bSCurr — offsetValSecond + j ], 0 < j < bSCurr

[0322] Here a and f are fixed constants summing up to 1, for example both 0.5. Again, also a filtered, in particular a half-pel filtered prediction can be used for the first, the second, or both prediction hypotheses.

[0323] One of the objects of the present invention is the efficient predictive transmission of the offset value offsetValFirst or of both offset values offsetValFirst, offsetValSecond. In the following, residual transform coding for block-matching prediction and the implied constraints on the prediction offset according to embodiments is described.

[0324] In a scenario of some embodiments, the prediction residual

[0325] resi[c][iStart + j] = X[c][iStart + j ] — pred[c][iStart + j]

[0326] is transform coded by using a block-wise transform. This means that at the encoder, a blockwise transform of size bSCurr is applied to the residual, the transform coefficients are quantized and the resulting quantization indices are entropy coded. From a decoder perspective, the quantization indices are entropy decoded and reconstructed and then the corresponding inverse transform is applied. This yields the reconstructed residual samples

[0327] resi[c][iStart + j], 0 < j < bsCurr.

[0328] Finally, at the encoder and at that decoder, the reconstructed signal Y is given as

[0329] F[c][iStart + j] = pred[c][iStart + j] + resi[c][iStart + j], 0 < j < bsCurr.

[0330] The latter used of transform coding of the prediction residual has the important consequence that the sample locations of the input block that is used for the blockmatching prediction have to be completely located outside the area of the sample locations of the current block. Otherwise, a design of a suitable encoder would be infeasible unless one is in the lossless scenario: For the transform coding, the encoder needs to have the whole set of residuals at its disposal, since the transform is a block-wise transform on the current block. Thus, for the current block, at sample location jcurrthe encoder cannot access reconstructed samples F[c] [iStart + j], 0 < jcurr< j. It is pointed out that exactly for this reason, the block matching offsets by which the sample locations of the reconstructed signal are to be shifted for the block matching prediction are always parametrized as a sum of the current blocksize bsCurr and a nonnegative offset value offsetValFirst, offsetValSecond.

[0331] Now, a transmission of offset values, in particular, the general principle of predictive offset coding is described.

[0332] The present application deals with various technologies to efficiently transmit the value offsetValFirst or both values offsetValFirst and offsetValSecond. The underlying guiding principle is that these values are to be transmitted predictively. This means that for the given block, the value of offsetValFirst, and, if applicable, the value of offsetValSecond are predicted from respective offset values offsetValFirstPred, offsetValSecondPred that were used on previous, already coded blocks. Then, only the difference between offsetValFirst resp. offsetValSecond and offsetValFirstPred and offsetValSecondPred are transmitted in the bitstream. The present application is furthermore to be seen in the context of a block-based hybrid waveform coder with variable block size. This means that multiple values for the block sizes on which block-matching prediction is carried out are supported. Typically, these block sizes are integral powers of two like 4, 8, 16, 32, 64, 128, 256, 512, 1024 and so on. Thus, in principle, the following mechanism would be targeted:

[0333] A first algorithm of an embodiment relates to a naive form of offset prediction assuming a fixed blocksize:

[0334] • Initialize the variables offsetValFirstPred and offsetValSecondPred (for example by zero).

[0335] • If block-matching prediction is to be carried out on the current block, decode the differences offsetValFirstDiff and offsetValSecondDiff from the bit-stream (where only the first is decoded if a single-hypothesis block matching is to be carried out).

[0336] • Set the current offset values to

[0337] offsetValFirst = offsetValFirstPred + offsetValFirstDiff

[0338] offsetValSecond = offsetValSecondPred + offsetValSecondDiff,

[0339] where the second assignment is carried out only in the case of multi-hypothesis block matching prediction.

[0340] • Perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond

[0341] • Update the prediction offset parameters to

[0342] offsetValFirstPred = offsetValFirst,

[0343] offsetValSecondPred = offsetValSecond (if applicable).

[0344] Now, a predictive transmission of offset values, in particular, a handling of different block sizes, is considered.

[0345] It is pointed out that the above prediction only makes sense if the blocks from which the offset values were predicted are of the same size as the current block on which the prediction is applied. The reason is that what should actually be predictable, i.e. is assumed to be constant or to vary only slightly between blocks, is the total offset value or the periodicity of the underlying signal, which, for a given block, is given as:

[0346] totalOffsetValFirst = offsetValFirst + blockSize, and, if applicable, the same for the second hypothesis. The block matching prediction assumes that a sample at sample location i is very similar to the sample at sample location

[0347] i — totalOffsetValFirst,

[0348] or, if applicable, to the superposition of the samples at sample locations

[0349] i — totalOffsetValFirst, i — totalOffsetValSecond.

[0350] Thus, as soon as multiple block sizes are involved, Algorithm I has actually to be modified to the following algorithm:

[0351] Now, a second algorithm of an embodiment is provided:

[0352] • Initialize the variables offsetValFirstPred and offsetValSecondPred (for example by zero).

[0353] • Initialize the block size variables bSFirstPred and bSSecondPred (for example by zero)

[0354] • If block-matching prediction is to be carried out on the current block, decode the differences offsetValFirstDiff and offsetValSecondDiff from the bit-stream (where only the first is decoded if a single-hypothesis block matching is to be carried out).

[0355] • Set the current offset value offsetValFirst according to the following modified rule that invokes the prediction block size (bsFirstPred) and the current blocksize(b sCurr):

[0356] offsetValFirst = offsetValFirstPred + bsFirstPred − bsCurr + offsetValFirstDiff

[0357] • If applicable, do the same for the second hypothesis

[0358] • Perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond

[0359] • Update the prediction offset parameters to

[0360] offsetValFirstPred = offsetValFirst, offsetValSecondPred = offsetValSecond (if applicable).

[0361] • Update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,

[0362] bsSecondPred = bsCurr (if applicable).

[0363] It should be noted that the important adjustment from Algorithm II toward Algorithm I is that the offsetValFirstPred is correctly normalized by

[0364] bsFirstPred — bsCurr before it serves as an input of the prediction. This can also be interpreted as saying that for the prediction of offset values, the value of

[0365] totalOffsetValFirstPred = offsetValFirstPred + bsFirstPred

[0366] on a previous block, is used since only this sum is the quantity (assumed underlying periodicity) that is actually assumed to be predictable over various blocks.

[0367] In the following, a predictive transmission of offset values, which forms a special case for the handling of different block sizes according to embodiments is described.

[0368] A problem statement can be provided as follows:

[0369] While the above normalization is conceptually correct, one problem occurs in Algorithm II in the following case: If

[0370] bsFirstPred < bsCurr,

[0371] it may happen that

[0372] totalOffsetValFirstPred < bsCurr.

[0373] In this case, totalOffsetValFirstPred is not a suitable predictor for the current block since it does not point entirely out of the current block of size bsCurr, which makes residual transform coding infeasible for the encoder, as pointed out above.

[0374] The proposed solution builds on the insight that, as already mentioned, the prediction of block-matching offsets relies on the general principle of an assumed periodicity with period totalOffsetValFirstPred in the underlying signal that is a suitable prediction for the current periodicity. From this perspective, the insight is that, if a previous block uses block matching prediction with period totalOffsetValFirstPred, also the period

[0375] n • totalOffsetValFirstPred

[0376] might be suitable, where. n is any positive natural number.

[0377] This leads to the following general principle of the proposed solution: If, for the reason that totalOffsetValFirstPred < bsCurr, the period totalOffsetValFirstPred of a previous block cannot be applied on the current block as a prediction of the current period, then a value of

[0378] n • totalOffsetValFirstPred

[0379] with n chosen such that

[0380] n • totalOffsetValFirstPred > bsCurr

[0381] should serve as a predictor for the period on the current block.

[0382] For this reason, the following general modified form of the second algorithm according to an embodiment is proposed:

[0383] • Initialize the variables offsetValFirstPred and offsetValSecondPred (for example by zero).

[0384] • Initialize the block size variables bSFirstPred and bSSecondPred (for example by zero)

[0385] • If block-matching prediction is to be carried out on the current block, decode the differences offsetValFirstDiff and offsetValSecondDiff from the bit-stream (where only the first is decoded if a single-hypothesis block matching is to be carried out).

[0386] • Set

[0387] totalOffsetValFirstPred = offsetValFirstPred + bsFirstPred.

[0388] • If totalOffsetValFirstPred > bsCurr, then set

[0389] offsetValFirst = totalOffsetValFirstPred − bsCurr + offsetValFirstDiff

[0390] • If totalOffsetValFirstPred < bsCurr, then set

[0391]

[0392] where n(—, — ) is a fixed predetermined function such that

[0393] n(bsCurr, bsFirstPred) · totalOffsetValFirstPred > bsCurr.

[0394] • If applicable, do the same for the second hypothesis

[0395] • Perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond

[0396] • Update the prediction offset parameters to

[0397] offsetValFirstPred = offsetValFirst,

[0398] offsetValSecondPred = offsetValSecond (if applicable).

[0399] • Update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,

[0400] bsSecondPred = bsCurr (if applicable). A first proposed solution for the function n(-,-) according to an embodiment is now provided.

[0401] One proposed specific solution for the function n(-,-) is as follows:

[0402] 1. n(bsCurr, bsFirstPred) is the smallest non-negative integer such that n^bsCurr, bsFirstPred') ■ totalOffsetValFirstPred > bsCurr and thus

[0403]

[0404] Now, a second proposed solution for the function n is provided:

[0405] While conceptually, solution 1 seems to be optimal (the smallest integer is taken in order to 1) avoid excessive memory access and 2) take into account that it is a reasonable assumption that the signal has some continuity properties and thus closely located samples are more similar), it might lead to implementation difficulties since it involves a division operation. For this reason, it might be useful to use the following approximation of the function from solution 1:

[0406]

[0407] It should be noted that since

[0408] totalOffsetValFirstPred > bsFirstPred,

[0409] it follows that

[0410]

[0411] and thus the second proposed solution satisfies the required design property. It should be noted that since the block sizes are integral powers of two, writing

[0412] bsCurr = (1 « log2BSCurr), bsFirstPred = (1 « log2BSFirstPred),

[0413] one can conveniently and implementation friendly realize the operation n(bsCurr, bsFirstPred) ■ totalOffsetValFirstPred

[0414] from the proposed second option as

[0415] totalOffsetValFirstPred « (log2BSCurr — log2BSPred).

[0416] A third proposed solution for the function n(-,-) is now provided.

[0417] It should be noted that the previous two solutions require that the block sizes of the blocks used for prediction of the value of totalOffsetValFirst (and, if applicable of totalOffsetValSecond) are to be stored which might potentially increase the implementation complexity. In order to circumvent this, it is pointed out that it is envisioned that the surrounding codec has a specified minimal value log2MinValBS for the 2-logarithm of the block size (for example log2MinValBS=4). This value might be part of the bitstream for some part of the sequence, for example be signaled as a high-level flag in some header. Thus, in the third proposed solution, it is proposed to set

[0418]

[0419] It should be noted that this function does not depend on bsCurr anymore. To get rid even of this dependency, in a variant of the proposed third solution, one might even set

[0420] n^bsCurr, bsFirstPred) = n^bsCurr) = 2log2MaxValBS~log2MinValBS,

[0421] where log2MaxValBS is a maximum value for the 2-logarithm of the block size that the codec supports in the present scenario (again, log2MaxValBS might be signaled in the bit stream i.g. as part of some header information).

[0422] Note that obviously, the solutions of solution 3 satisfy the required constraint that

[0423] n(bsCurr, bsFirstPred) · totalOffsetValFirstPred > bsCurr.

[0424] Now, a fourth proposed solution for the function n(-,-) is now provided.

[0425] In the fourth solution, it is proposed to set

[0426]

[0427] In this case, the division can in fact be avoided by not working with n directly, but by setting

[0428] offsetValFirst = 0 + offsetValFirst Diff.

[0429] In the following, predictive transmission of offset values using offset values from previous channels according to embodiments is described.

[0430] It is also proposed in the present invention to predict offset values for block-matching prediction from offset values that were used on previous channels.

[0431] For c > 0, instead of using the previous offset value of the current channel

[0432] offsetValFirstPred = offsetValFirstPred[c],

[0433] it is also possible to use the previous offset prediction of a previous channel offsetValFirstPred = offsetValFirstPred[cprev] with O < cprev< c.

[0434] Then, bsFirstPred is also changed accordingly from

[0435] bsFirstPred = bsFirstPred [c]

[0436] to

[0437] bsFirstPred = bsFirstPredf cprev].

[0438] The reasoning for using a different channel for offset prediction is that although the samples of the different channels may not be correlated, there is the possibility that their periodicity is correlated. Moreover, an advantage of prediction the offset value from the offset value of a previous channel is that an offset value used for the block matching prediction on the same sample locations as the current block (but in a different channel for which these samples have already been processed) may serve as an input. To indicate that a prediction from a previous channel is used, a flag is signaled in the bitstream. While in theory all previous channels are candidates for such an offset prediction, limiting it to the immediately preceding channel c-1 is reducing the signaling overhead by a large margin. If applicable, the same can be applied to offsetValFirstSecond and bsFirstSecond and a second flag is signaled in the bitstream to specify if the previous channel was used to create the second offset prediction.

[0439] In the following, a coding of offset value differences according to embodiments is described.

[0440] Since the values of totalO f f setValFirst are coded predictively as described above, it is generally assumed that the prediction residual of the offset value, i.e. the coded difference offsetValFirstDiff, and, if applicable, also the coded difference offsetValSecondDiff, which are determined solely by the encoder in order to find the optimal (with respect to a cost function that should be an approximation of Lagrangian rate distortion cost) block-matching configuration, and which are transmitted (entropy coded) in the bit stream, are entropy coded by a scheme that exploits that they have a large probability to be either zero (since the offset value prediction is good) or at least of small value. It is proposed to realize this by an entropy coding scheme that uses a first flag that indicates whether the difference value is zero is not and which then uses a binarization of the offset value difference that has the property that larger values consume more bins than smaller values. A preferred solution is an Exponential Golomb binarization scheme.

[0441] In the following, a draft specification text according to a particular embodiment is described.

[0442] Below, a draft specification text for one possible embodiment of the proposed solution is given, invoking the second proposed solution for the function n(-,-). It is pointed out that a similar specification text would also applied to other realization of the function n(-,-).

[0443] The block matching prediction data syntax according to a particular embodiment is now provided.

[0444]

[0445]

[0446] In the following, a block matching predictive data semantics is now described.

[0447] bm pred mult hyp flag equal to 1 indicates that the block matching prediction mode with two hypotheses is used. When bm_pred_mult_hyp_flag is not present, it is inferred to be 0.

[0448] bm_pred_filter_flag[ n ] equal to 1 indicates that the reference samples used for the n-th hypothesis of the block matching prediction are to be filtered, where the set of filter coefficients is determined by the syntax element bm_pred_filter_idx[ n ]. When bm_pred_filter_flag[ n ] is not present, it is inferred to be 0.

[0449] bm_pred_filter_idx[ n ] specifies the index filterldx used to derive filter coefficients (e.g., as specified in a Table 9) for filtering the reference samples of the n-th hypothesis of the block matching prediction. When bm_pred_filter_idx[ n ] is not present, it is inferred to be 1:

[0450] bm pred off pred prev ch _flag[ n ] equal to 1 indicates that the value of offset minus block size for the n-th block matching prediction hypothesis is predicted from the value of offset minus block size of the n-th hypothesis of the previous channel. When bm_pred_off_pred_prev_ch_flag[n] is not present, it is inferred to be 0.

[0451] bm_pred_abs_offd_greaterO_flag[ n ] equal to 1 indicates that the offset difference to the predicted value of offset minus block size for the n-th hypothesis of the block matching prediction is not 0.

[0452] bm_pred_abs_offd_minusl[ n ] plus 1 specifies the absolute value of the offset difference to the predicted value of offset minus blocksize for the n-th hypothesis of the block matching prediction.

[0453] bm_pred_offd_sign_flag[ n ] specifies the sign of the offset difference to the predicted value of offset minus blocksize for the n-th hypothesis of the block matching prediction: - When bm_pred_offd_sign_flag[ n ] is equal to 0, the corresponding offset difference has a positive sign.

[0454] - Otherwise (bm_pred_offd_sign_flag[ n ]is not equal to 0), the corresponding offset difference has a negative sign.

[0455] When bm_pred_offd_sign_flag[ n ] is not present, it is inferred to be 0.

[0456] According to an embodiment, when transmitting the parameter for the block matching predictor, the offset value L in block skwith block size bkmay, e.g., be transmitted as Lk= L — bk. This method saves bits as the block size is already known at this point and the parameter L is only valid for the block skif the condition L > bkis fulfilled. If a subsequent block sk+ihas a different block size bk+ias sk, the transmitted offset value may, e.g., be recalculated as Lk+i= Lk+ bk— bk+i. If the block size bk+iis smaller than bk, the condition L > bk> bk+iis still true.

[0457] However, it is assumed that there may be a stronger correlation between the samples in the current block and in the near past than between samples in the current block and in the distant past. Therefore, in an embodiment, the new offset value may, e.g., be calculated as

[0458]

[0459] instead. This shift may, for example, only be applied if Lkis larger than a threshold, which may, for example, be a fixed number or a multiple of the block size bk+i.

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

[0461] Depending on certain implementation requirements, embodiments of the invention can be implemented in hardware or in software or at least partially in hardware or at least partially 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.

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

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

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

[0465] 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. 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-transitory.

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

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

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

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

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

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

[0472] 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. 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. An encoder (100) for encoding a signal into a data stream,wherein the encoder (100) is configured to encode a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block,wherein the encoder (100) is configured to encode a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block,wherein the encoder (100) is configured to encode the current block depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

2. An encoder (100) according to claim 1,wherein the plurality of blocks exhibits a variable block length; and / orwherein at least two of the plurality of blocks exhibit a different block length.

3. An encoder (100) according to claim 1 or 2,wherein the encoder (100) is configured to generate the data stream such that the offset value for the current block depends on the block length of the current block.

4. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to encode the current block of the signal by determining a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block, andby encoding the prediction residual within the data stream,wherein the prediction of the current block depends on the offset value of the current block.

5. An encoder (100) according to claim 4,wherein the encoder (100) is configured to determine the prediction of the current block, such that all samples which are used for determining the prediction of the current block are located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks.

6. An encoder (100) according to claim 4 or 5,wherein the encoder (100) is configured to apply a blockwise transform of a size of the block length of the current block to the prediction residual, by quantizing transform coefficients to obtain resulting quantization indices, by entropy encoding the resulting quantization indices to obtain entropy-encoded quantization indices, and by generating the data stream such that the data stream comprises the entropy- encoded quantization indices.

7. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine a total offset value for the current block, which indicates how many sample locations are to be shifted to obtain the prediction of the current block.

8. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine a total offset value for the current block such that the total offset value for the current block represents a sum of the block length of the current block and at least one non-negative integer value (e.g., offsetValFirst, offsetValSecond), wherein the at least one non-negative integer value is the offset value (e.g., offsetValFirst) for the current block, or is the offset value (e.g., offsetValFirst) for the current block and one or more additional offset values (e.g., offsetValSecond) for the current block.

9. An encoder (100) according to claim 8,wherein the encoder (100) is configured to determine a total offset value for the current block as a sum of the offset for the current block and the block length of the current block (e.g., totalOffsetValFirst = offsetValFirst + blockSize).

10. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to generate the data stream such that the data stream comprises a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference.

11. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine a total offset value for the current block depending on a total offset value totalOffsetValFirstPred of a previous block of the plurality of blocks asn · totalOffsetValFirstPred ≥ bsCurrwherein bsCurr indicates the block length of the current block.

12. An encoder (100) according to claim 11,wherein n indicates a real number.

13. An encoder (100) according to claim 11 or 12,wherein n indicates a non-negative value.

14. An encoder (100) according to one of claims 11 to 13,wherein n indicates a value that is not an integer value.

15. An encoder (100) according to one of claims 11 to 13,wherein n indicates an integer value.

16. An encoder (100) according to claim 11 or 12,wherein n indicates a non-negative value that is not an integer value.

17. An encoder (100) according to claim 11 or 12,wherein n indicates a non-negative integer value.

18. An encoder (100) according to one of claims 11 to 17,wherein n is defined asbsCurrn(bsCurr, bsFirstPred) = ceiltotalOffsetValFirstPred19. An encoder (100) according to one of claims 11 to 17,wherein n is defined asn(bsCurr, bsFirstPred) = 2log2(bsCurr) − log2(bsFirstPred)wherein bsCurr indicates the block length of the current block, andwherein bsFirstPred indicates the block length of a previous block of the plurality of blocks.

20. An encoder (100) according to one of claims 11 to 17,wherein n is defined aswhere log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports;where log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block.

21. An encoder (100) according to one of claims 11 to 17,wherein n is defined asn^bsCurr, bsFirstPred) = n^bsCurr) = 2log2MaxValBS l°92MmvaiBswhere log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports;where log2MaxValBS is a maximum value for the 2-logarithm of the block size that the employed codec supports.

22. An encoder (100) according to one of claims 11 to 17,wherein n is defined aswherein bsCurr indicating the block length of the current block;wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks.

23. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine a total offset value for the current block astotalOffsetValFirstPred « (log2BSCurr — log2BSPred)wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks,wherein log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block, andwherein log2BSPred indicates log2 bsFirstPred) with bsFirstPred indicating the block length of the previous block.

24. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine the offset value for a block of a plurality of blocks of a first channel of a plurality of channels using an offset value for a block of a plurality of blocks of a previous channel of the plurality of channels.

25. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine the offset value for a previous block of the plurality of blocks of the first channel using an offset value for a previous block of the plurality of blocks of the previous channel.

26. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to employ entropy encoding to encode the offset of the current block or a value derived from the offset of the current block into the data stream.

27. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to generate the data stream such that the data stream comprises information on the block length of the current block.

28. An encoder (100) according to claim 27,wherein the encoder (100) is configured to generate the data stream such that the data stream comprises information on the block length of each of the plurality of blocks.

29. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to generate the data stream such that the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

30. An encoder (100) according to claim 29,wherein said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

31. An encoder (100) according to one of the preceding claims,wherein the signal is a periodic signal.

32. An encoder (100) according to claim 31,wherein the encoder (100) is configured to encode each block of two or more blocks of the plurality of blocks using an offset value for said block,wherein the offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

33. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to encode a plurality of samples of each block of the plurality of blocks of the signal into the data stream,wherein the encoder (100) is configured to encode a sample of the current block depending on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depending on the offset value for said current block.

34. An encoder (100) according to claim 33,wherein said sample of the current block is a first sample of the current block,wherein the encoder (100) is configured to encode the first sample of the current block depending on.. l'f i / e e..... wh r in ‘ indicates the first sample of the current block or a value depending on the first sample of the current block,.. If Ill ' iSl. — I}. — I I. _ wherein ' -J L- indicates a previous sample preceding the first sample of the current block in the signal,wherein k is an index identifying a k-th block among the plurality of blocks, wherein Sk indicates a position of a first sample of the k-th block within the signal,wherein h indicates a block length of the &-th block,wherein trindicates the offset value for the current block,wherein m indicates a channel among one or more channels.

35. An encoder (100) according to one of the preceding claims,wherein the encoder (100) is configured to determine the offset value for the current block from an offset value for a previous block of the plurality of blocks.

36. An encoder (100) according to claim 35,wherein, if lk< lj, the encoder (100) is configured to determine the offset value for the current block trfrom the offset value t. of the previous block as:wherein lj indicates a block length of the previous block,wherein lkindicates the block length of the current block.

37. An encoder (100) according to one of the preceding claims,wherein, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the encoder (100) is configured to determine an offset value for the subsequent block depending on:wherein k is an index indicating the current block,wherein i is an index offset, such that k + i indicates the subsequent block,wherein bkindicates the block length of the current block,wherein bk+iindicates the block length of the subsequent block,wherein Lkindicates the offset value for the current block, andwherein Lk+iindicates the offset value for the subsequent block.

38. An encoder (100) according to one of the preceding claims,wherein, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the encoder (100) is configured to determine an offset value for the subsequent block depending on:wherein k is an index indicating the current block,wherein i is an index offset, such that k + i indicates the subsequent block,wherein bkindicates the block length of the current block,wherein bk+iindicates the block length of the subsequent block,wherein Lkindicates the offset value for the current block, andwherein Lk+iindicates the offset value for the subsequent block,wherein ≫ indicates a right shift operation by an integer number of bits.

39. An encoder (100) according to one of the preceding claims,wherein the signal comprises one or more channels,wherein each block of the plurality of blocks is a block of one of the one or more channels of the signals,wherein the encoder (100) is configured to encode the one or more channels into the data stream.

40. An encoder (100) according to claim 39,wherein the one or more channels comprise at least two channels,wherein the encoder (100) is configured to encode the at least two channels into the data stream.

41. An encoder (100) according to claim 39 or 40,wherein the encoder (100) is configured to encode the one or more channels into the data stream using intra channel prediction.

42. An encoder (100) according to one of the preceding claims,wherein the signal is a waveform signal.

43. An encoder (100) according to one of the preceding claims,wherein the signal is a biomedical waveform signal.

44. An encoder (100) according to one of claims 1 to 42,wherein the signal is a video signal.

45. An encoder (100) according to one of claims 1 to 42,wherein the signal is an audio signal.

46. A decoder (200) for decoding a data stream having encoded therein a signal,wherein the decoder (200) is configured to decode the data stream to reconstruct a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block,wherein the decoder (200) is configured to decode an encoding of a current block of the plurality of blocks of the signal from the data stream using an offset value for the current block,wherein the decoder (200) is configured to determine the offset value for the current block depending on the block length of one of the plurality of blocks.

47. A decoder (200) according to claim 46,wherein the plurality of blocks exhibits a variable block length; and / orwherein at least two of the plurality of blocks exhibit a different block length.

48. A decoder (200) according to claim 46 or 47,wherein the offset value for the current block depends on the block length of the current block.

49. A decoder (200) according to one of claims 46 to 48,wherein the decoder (200) is configured to reconstruct the current block by determining from the data stream a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block which depends on the offset value for the current block, and by reconstructing the current block of the signal using the prediction of the current block and using the prediction residual of the current block.

50. A decoder (200) according to claim 49,wherein the decoder (200) is configured to determine the prediction of the current block, such that all samples which are used for determining the prediction of thecurrent block are located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks.

51. A decoder (200) according to claim 49 or 50,wherein the decoder (200) is configured to decode the data stream by entropy decoding and reconstructing quantization indices being encoded within the data stream, and by applying an inverse transform using the quantization indices to determine the prediction residual of the current block.

52. A decoder (200) according to one of claims 46 to 51,wherein the decoder (200) is configured to determine a total offset value, which indicates how many sample locations are to be shifted to obtain the prediction of the current block.

53. A decoder (200) according to one of claims 46 to 52,wherein the decoder (200) is configured to determine a total offset value for the current block such that the total offset value for the current block represents a sum of the block length of the current block and at least one non-negative integer value (e.g., offsetValFirst, offsetValSecond), wherein the at least one non-negative integer value is the offset value (e.g., offsetValFirst) for the current block, or is the offset value (e.g., offsetValFirst) for the current block and one or more additional offset values (e.g., offsetValSecond) for the current block.

54. A decoder (200) according to claim 53,wherein the decoder (200) is configured to determine a total offset value for the current block as a sum of the offset for the current block and the block length of the current block (e.g., totalOffsetValFirst = offsetValFirst + blockSize).

55. A decoder (200) according to one of claims 46 to 54,wherein the data stream comprises a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference, andwherein the decoder (200) is configured to determine the offset for the current block from the offset of the previous block and from said difference being comprised by the data stream.

56. A decoder (200) according to one of claims 46 to 55,wherein the decoder is configured to reconstruct the current block by conducting:o initialize variables offsetValFirstPred and offsetValSecondPred (for example by zero);o if block-matching prediction is to be carried out on the current block, decode differences offsetValFirstDiff and offsetValSecondDiff from the data stream;o set the current offset values tooffsetValFirst = offsetValFirstPred + offsetValFirstDiff off setVal Second = offsetValSecondPred + offsetValSecondDiff; where the second assignment is carried out only in case of multi-hypothesis block matching prediction;o perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecond;o update the prediction offset parameters tooffsetValFirstPred = offsetValFirst,offsetValSecondPred = offsetValSecond (if applicable).

57. A decoder (200) according to one of claims 46 to 55,wherein the decoder is configured to reconstruct the current block by conducting:o initialize variables offsetValFirstPred and offsetValSecondPred (for example by zero);o initialize block size variables bSFirstPred and bSSecondPred (for example by zero);o if block-matching prediction is to be carried out on the current block, decode differences offsetValFirstDiff and offsetValSecondDiff from the data stream (where only the first is decoded if a single-hypothesis block matching is to be carried out);o set current offset value offsetValFirst according to a following rule that invokes prediction block size (bsFirstPred) and the current block size (bsCurr):offsetValFirst = offsetValFirstPred + bsFirstPred − bsCurr + offsetValFirstDiffo if applicable, do the same for the second hypothesis;o perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecondo update the prediction offset parameters toof f setValFirstPred = offsetValFirst, offsetValSecondPred = offsetValSecond (if applicable) o update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,bsSecondPred = bsCurr (if applicable).

58. A decoder (200) according to one of claims 46 to 57,wherein the decoder (200) is configured to determine a total offset value for the current block depending on a total offset value totalOffsetValFirstPred of a previous block of the plurality of blocks asn · totalOffsetValFirstPred ≥ bsCurrwherein bsCurr indicates the block length of the current block.

59. A decoder (200) according to claim 58,wherein n indicates a real number.

60. A decoder (200) according to claim 58 or 59,wherein n indicates a non-negative value.

61. A decoder (200) according to one of claims 58 to 60,wherein n indicates a value that is not an integer value.

62. A decoder (200) according to one of claims 58 to 60,wherein n indicates an integer value.

63. A decoder (200) according to claim 58 or 59,wherein n indicates a non-negative value that is not an integer value.

64. A decoder (200) according to claim 58 or 59,wherein n indicates a non-negative integer value.

65. A decoder (200) according to one of claims 46 to 55 or according to one of claims 58 to 64,wherein the decoder is configured to reconstruct the current block by conducting:o initialize the variables offsetValFirstPred and offsetValSecondPred (for example by zero);o initialize the block size variables bSFirstPred and bSSecondPred (for example by zero);o if block-matching prediction is to be carried out on the current block, decode the differences offsetValFirstDiff and offsetValSecondDiff from the bit-stream (where only the first is decoded if a single-hypothesis block matching is to be carried out);o settotalOffsetValFirstPred = offsetValFirstPred + bsFirstPredo if totalOffsetValFirstPred > bsCurr, then setoffsetValFirst = totalOffsetValFirstPred − bsCurr + offsetValFirstDiffo if totalOffsetValFirstPred < bsCurr, then setoffsetValFirst = n(bsCurr, bsFirstPred) · totalOffsetValFirstPred − bsCurr + offsetValFirstDiff,where n(—, — ) is a fixed predetermined function such thatn(bsCurr, bsFirstPred) · totalOffsetValFirstPred > bsCurr o if applicable, do the same for the second hypothesiso perform block matching prediction on the current block with the values offsetValFirst and, if applicable, of offsetValSecondo update the prediction offset parameters tooffsetValFirstPred = offsetValFirst,offsetValSecondPred = offsetValSecond (if applicable);o update the block sizes of the block matching prediction according to bsFirstPred = bsCurr,bsSecondPred = bsCurr (if applicable).

66. A decoder (200) according to one of claims 58 to 65,wherein n is defined as67. A decoder (200) according to one of claims 58 to 65,wherein n is defined asn(bsCurr, bsFirstPred) = 2log2(bsCurr) − log2(bsFirstPred)wherein bsCurr indicates the block length of the current block, andwherein bsFirstPred indicates the block length of a previous block of the plurality of blocks.

68. A decoder (200) according to one of claims 58 to 65,wherein n is defined aswhere log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block;where log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports.

69. A decoder (200) according to one of claims 58 to 65,wherein n is defined aswhere log2MinValBS is a minimal value for the 2-logarithm of the block size that an employed codec supports;where log2MaxValBS is a maximum value for the 2-logarithm of the block size that the employed codec supports.

70. A decoder (200) according to one of claims 58 to 65,wherein n is defined aswherein bsCurr indicating the block length of the current block;wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks.

71. A decoder (200) according to one of claims 46 to 70,wherein the decoder (200) is configured to determine a total offset value for the current block astotalOffsetValFirstPred « (log2BSCurr — log2BSPred)wherein totalOffsetValFirstPred indicates a total offset value of a previous block of the plurality of blocks,wherein log2BSCurr indicates log2(bsCurr) with bsCurr indicating the block length of the current block, andwherein log2BSPred indicates log2 bsFirstPred) with bsFirstPred indicating the block length of the previous block.

72. A decoder (200) according to one of claims 46 to 71,wherein the decoder (200) is configured to determine the offset value for a block of a plurality of blocks of a first channel of a plurality of channels using an offsetvalue for a block of a plurality of blocks of a previous channel of the plurality of channels.

73. A decoder (200) according to claim 72,wherein the decoder (200) is configured to determine the offset value for a previous block of the plurality of blocks of the first channel using an offset value for a previous block of the plurality of blocks of the previous channel.

74. A decoder (200) according to one of claims 46 to 73,wherein the decoder (200) is configured to employ entropy decoding to decode the offset of the current block or a value derived from the offset of the current block from the data stream.

75. A decoder (200) according to one of claims 46 to 74,wherein the decoder (200) is configured to obtain information on the block length of the current block from the data stream.

76. A decoder (200) according to claim 75,wherein the decoder (200) is configured to obtain information on the block length of each of the plurality of blocks from the data stream.

77. A decoder (200) according to one of claims 46 to 76,wherein the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

78. A decoder (200) according to claim 77,wherein said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

79. A decoder (200) according to one of claims 46 to 78,wherein the signal is a periodic signal.

80. A decoder (200) according to claim 79,wherein the decoder (200) is configured to reconstruct each block of two or more blocks of the plurality of blocks using an offset value for said block,wherein the offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

81. A decoder (200) according to one of claims 46 to 80,wherein each block of the plurality of blocks of the signal comprises a plurality of samples,wherein the decoder (200) is configured to decode an encoding of a sample of the current block depending on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depending on the offset value for said current block.

82. A decoder (200) according to claim 81,wherein said sample of the current block is a first sample of the current block,wherein the decoder (200) is configured to decode an encoding of the first sample of the current block depending onwhereinindicates a prediction of the first sample of the current block or a value depending on the first sample of the current block,whereinindicates a previous sample preceding the first sample of the current block in the signal,wherein k is an index identifying a k-th block among the plurality of blocks, wherein Sk indicates a position of a first sample of the k-th block within the signal,wherein h indicates a block length of the &-th block,wherein trindicates the offset value for the current block,wherein m indicates a channel among one or more channels.

83. A decoder (200) according to one of claims 46 to 82,wherein the decoder (200) is configured to determine the offset value for the current block from an offset value for a previous block of the plurality of blocks.

84. A decoder (200) according to claim 83,wherein, if lk< lj, the decoder (200) is configured to determine the offset value for the current block trfrom the offset value t. of the previous block as:wherein lj indicates a block length of the previous block,wherein lkindicates the block length of the current block.

85. A decoder (200) according to one of claims 46 to 84,wherein, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the decoder (200) is configured to determine an offset value for the subsequent block depending on:Lk+i = Lk + bk— bk+iwherein k is an index indicating the current block,wherein i is an index offset, such that k + i indicates the subsequent block,wherein bkindicates the block length of the current block,wherein bk+iindicates the block length of the subsequent block,wherein Lkindicates the offset value for the current block, andwherein Lk+iindicates the offset value for the subsequent block.

86. A decoder (200) according to one of claims 46 to 85,wherein, if the block length for the current block differs from the block length of a subsequent block of the plurality of blocks, the decoder (200) is configured to determine an offset value for the subsequent block depending on:wherein k is an index indicating the current block,wherein i is an index offset, such that k + i indicates the subsequent block,wherein bkindicates the block length of the current block,wherein bk+iindicates the block length of the subsequent block,wherein Lkindicates the offset value for the current block, andwherein Lk+iindicates the offset value for the subsequent block,wherein ≫ indicates a right shift operation by an integer number of bits.

87. A decoder (200) according to one of claims 46 to 86,wherein the signal comprises one or more channels,wherein each block of the plurality of blocks is a block of one of the one or more channels of the signals,wherein the decoder (200) is configured to decode an encoding of the one or more channels from the data stream.

88. A decoder (200) according to claim 87,wherein the one or more channels comprise at least two channels,wherein the decoder (200) is configured to decode an encoding of the at least two channels from the data stream.

89. A decoder (200) according to claim 87 or 88,wherein the decoder (200) is configured to decode the encoding of the one or more channels from the data stream using intra channel prediction.

90. A decoder (200) according to one of claims 46 to 89,wherein the signal is a waveform signal.

91. A decoder (200) according to one of claims 46 to 90,wherein the signal is a biomedical waveform signal.

92. A decoder (200) according to one of claims 46 to 89,wherein the signal is a video signal.

93. A decoder (200) according to one of claims 46 to 89,wherein the signal is an audio signal.

94. A data stream comprising an encoding of a signal,wherein the data stream comprises an encoding of a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples andexhibits a block length depending on a number of the plurality of samples within the block,wherein an encoding of a current block of the plurality of blocks of the signal in the data stream depends on an offset value for the current block,wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

95. A data stream according to claim 94,wherein the plurality of blocks exhibits a variable block length; and / orwherein at least two of the plurality of blocks exhibit a different block length.

96. A data stream according to claim 94 or 95,wherein the offset value for the current block depends on the block length of the current block.

97. A data stream according to one of claims 94 to 96,wherein the current block of the signal is encoded into the data streamby determining a prediction residual of the current block, which indicates a residual between the current block of the signal and a prediction of the current block, andby encoding the prediction residual within the data stream,wherein the prediction of the current block depends on the offset value of the current block.

98. A data stream according to claim 97,wherein all samples which are used for determining the prediction of the current block are located in one or more other blocks of the plurality of blocks, but outside the current block of the plurality of blocks.

99. A data stream according to claim 97 or 98,wherein the data stream comprises the entropy-encoded quantization indices being generated by applying a blockwise transform of a size of the block length of the current block to the prediction residual, by quantizing transform coefficients to obtain resulting quantization indices, and by entropy encoding the resulting quantization indices to obtain the entropy-encoded quantization indices.

100. A data stream according to one of claims 97 to 99,wherein the data stream comprises a difference between the offset for the current block and an offset of a previous block of the plurality of blocks, or such that the data stream comprises an encoding of said difference.

101. A data stream according to one of claims 97 to 100,wherein the offset of the current block or a value derived from the offset of the current block is entropy encoded into the data stream.

102. A data stream according to one of claims 94 to 101,wherein the data stream comprises information on the block length of the current block.

103. A data stream according to claim 102,wherein the data stream comprises information on the block length of each of the plurality of blocks.

104. A data stream according to one of claims 94 to 103,wherein the offset value for the current block depends on the block length of a previous block of the plurality of blocks, which precedes, in a time direction and / or in a channel direction, the current block in the signal.

105. A data stream according to claim 104,wherein said previous block immediately precedes, in the time direction and / or in the channel direction, the current block in the signal.

106. A data stream according to one of claims 94 to 105,wherein the signal is a periodic signal.

107. A data stream according to claim 106,wherein the data stream comprises an encoding of each block of two or more blocks of the plurality of blocks depending on an offset value for said block,wherein the offset values of the two or more blocks indicate a corresponding point with respect to a period of the periodic signal.

108. A data stream according to one of claims 94 to 107,wherein the data stream comprises an encoding of a plurality of samples of each block of the plurality of blocks of the signal,wherein an encoding of a sample of the current block depends on a sample of a preceding block of the plurality of blocks preceding, in a time direction and / or in a channel direction, the current block in the signal and depends on the offset value for said current block.

109. A data stream according to claim 108,wherein said sample of the current block is a first sample of the current block,wherein the encoding of the first sample of the current block depends on.. l'f i / e..... wh rein ‘ indicates the first sample of the current block or a value depending on the first sample of the current block,whereinindicates a previous sample preceding the first sample of the current block in the signal,wherein k is an index identifying a k-th block among the plurality of blocks, wherein Sk indicates a position of a first sample of the k-th block within the signal,wherein h indicates a block length of the &-th block,wherein trindicates the offset value for the current block,wherein m indicates a channel among one or more channels.

110. A data stream according to one of claims 94 to 109,wherein the offset value for the current block depends on an offset value for a previous block of the plurality of blocks.

111. A data stream according to claim 110,wherein, if lk< lj, the offset value for the current block trdepends on the offset value trJof the previous block according to:wherein lj indicates a block length of the previous block,wherein lkindicates the block length of the current block.

112. A data stream according to one of claims 94 to 111,wherein the signal comprises one or more channels,wherein each block of the plurality of blocks is a block of one of the one or more channels of the signals,wherein the data stream comprises an encoding of the one or more channels.

113. A data stream according to claim 112,wherein the one or more channels comprise at least two channels,wherein the data stream comprises an encoding of the at least two channels.

114. A data stream according to claim 112 or 113,wherein the encoding of the one or more channels in the data stream depends on intra channel prediction.

115. A data stream according to one of claims 94 to 114,wherein the signal is a waveform signal.

116. A data stream according to one of claims 94 to 115,wherein the signal is a biomedical waveform signal.

117. A data stream according to one of claims 94 to 114,wherein the signal is a video signal.

118. A data stream according to one of claims 94 to 114,wherein the signal is an audio signal.

119. A system comprising:an encoder (100) according to one of claims 1 to 45 for encoding a signal into a data stream, anda decoder (200) according to one of claims 46 to 93 for decoding the data stream to reconstruct the signal.

120. A method for encoding a signal into a data stream,wherein the method comprises encoding a plurality of blocks of the signal into the data stream, wherein each of the plurality of blocks comprises a plurality ofsamples and exhibits a block length depending on a number of the plurality of samples within the block,wherein the method comprises encoding a current block of the plurality of blocks of the signal into the data stream using an offset value for the current block,wherein encoding the current block is conducted depending on the offset value for the current block, wherein the offset value for the current block depends on the block length of one of the plurality of blocks.

121. A method for decoding a data stream having encoded therein a signal,wherein the method comprises decoding the data stream to reconstruct a plurality of blocks of the signal, wherein each of the plurality of blocks comprises a plurality of samples and exhibits a block length depending on a number of the plurality of samples within the block,wherein the method comprises decoding an encoding of a current block of the plurality of blocks of the signal from the data stream using an offset value for the current block,wherein the method comprises determining the offset value for the current block depending on the block length of one of the plurality of blocks.

122. A computer program for implementing the method of claim 120 or 121 when being executed on a computer or signal processor.

Citation Information

Patent Citations

  • Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding-decoding apparatus

    US20180035118A1

  • Effective prediction using partition coding

    US20230412822A1

  • Transform-based block-wise coding

    WO2025149681A1