Arithmetic encoder, arithmetic decoder, video encoder, video decoder, encoding method, decoding method and computer program

By using the lookup table mapping and weighted summation method, the balance problem between computational efficiency and reliability in arithmetic coding is solved, and efficient symbol encoding and decoding is achieved.

CN112689960BActive Publication Date: 2025-10-17FRAUNHOFER GESELLSCHAFT ZUR FORDERUNG DER ANGEWANDTEN FORSCHUNG EV
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN201980058433.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-12-28
Filing Date
2019-07-05
Publication Date
2025-10-17
Estimated Expiration
2039-10-22

AI Technical Summary

Technical Problem

Existing arithmetic coding technology has difficulty in achieving a good balance between computational efficiency and reliability when processing symbol probability changes, especially in the problem of excessive resource requirements in interval subdivision and determination of probability information.

Method used

A lookup table-based mapping mechanism is adopted to utilize two state variable values ​​to derive interval size information. The scaled and rounded versions of the first and second state variable values ​​are mapped through the lookup table. Combined with weighted summation or weighted average, a two-dimensional lookup table is used to reduce computational complexity and resource requirements.

Benefits of technology

Efficient coding that takes into account symbol probability changes at different time scales is achieved, reducing computational complexity and resource requirements while maintaining coding efficiency and reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112689960B_ABST
    Figure CN112689960B_ABST
Patent Text Reader

Abstract

An arithmetic encoder for encoding a plurality of symbols having symbol values is configured to derive interval size information for an arithmetic encoding of one or more symbol values to be encoded based on a plurality of state variable values representing statistics of a plurality of previously encoded symbol values having different adaptation time constants. The arithmetic encoder is configured to map a first state variable value or a scaled and / or rounded version thereof using a look-up table and to map a second state variable value or a scaled and / or rounded version thereof using the look-up table in order to obtain the interval size information describing an interval size for an arithmetic encoding of one or more symbols to be encoded. Further arithmetic encoders, arithmetic decoders, video encoders, video decoders, encoding methods, decoding methods and computer programs based on the same concept and other concepts are also disclosed.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] An arithmetic encoder is created according to embodiments of the present invention.

[0002] An arithmetic decoder is created according to further embodiments of the present invention.

[0003] A video encoder is created according to further embodiments of the present invention.

[0004] A video decoder is created according to further embodiments of the present invention.

[0005] Methods for encoding and methods for decoding a plurality of symbols are created according to further embodiments of the present invention.

[0006] Corresponding computer programs are created according to further embodiments of the present invention.

[0007] Generally, embodiments according to the present invention use a finite state machine to create a context model update method. BACKGROUND

[0008] Arithmetic encoding and decoding proved to be a valuable tool for encoding and decoding of audio and video content as well as for encoding of other types of information, such as pictures, neural network coefficients, etc. Embodiments of the present invention can be used for all of these applications. For example, binary values (e.g., symbols) can be utilized with a known probability of occurrence in a binary sequence representing video or audio content (or other types of content) to improve encoding efficiency. In particular, arithmetic encoding can handle varying probabilities of “0” and “1” in an efficient manner and can adapt to changes in the probabilities in a fine-grained manner.

[0009] However, in order for arithmetic encoding and decoding to bring about the best encoding efficiency, it is important to have good information about the probabilities of “0” and “1” that well reflect the actual frequency of occurrence.

[0010] In order to adapt to the probabilities of “0” and “1” (or, generally, to the probabilities of symbols to be encoded), generally a concept is used to adjust the boundaries of intervals within a total (current) range of values to obtain an interval subdivision (e.g., such that the entire range of values is subdivided into intervals associated with different binary values or groups of binary values).

[0011] In other words, information about the probabilities of different symbols (such as “0” and “1”) is used to derive interval size information (or, equivalently, interval size values) that describes the width of intervals associated with the symbols (where the total interval width can vary over time, e.g., due to interval renormalization, depending on the encoding or decoding process).

[0012] Therefore, there is a need for a concept for determining source statistic values (e.g. state variable values) and / or range values (like interval size values) for interval subdivision (e.g. for subdivision of a total coding interval) that provides a good balance between computational efficiency and reliability. SUMMARY

[0013] An arithmetic encoder for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to derive interval size information (p i k ) for arithmetic encoding of one or more symbol values to be encoded based on a plurality of state variable values (s k , R*p k ) associated with a given context mode indicated by an index k, wherein the plurality of state variable values represent statistics of a plurality of previously encoded symbol values (e.g. a sequence of binary values 0 and 1) having different adaptation time constants, wherein the arithmetic encoder is configured to map a first state variable value (s k 1) or a scaled and / or rounded version thereof using a look-up table (LUT1) and to map a second state variable value (s k 2) or a scaled and / or rounded version thereof using a look-up table (LUT1) in order to obtain said interval size information describing an interval size for arithmetic encoding of one or more symbols to be encoded.

[0014] The embodiment according to the present invention is based on the idea that interval size information can be obtained at especially good reliability if a look-up table based mapping is applied to state variable values associated with different adaptation time constants. In other words, by applying the same look-up table to two state variable values describing statistics (e.g. symbol probabilities) over different time scales, interval size information can be obtained in an efficient way (as only one look-up table is needed) but at good reliability (as statistics over different time scales are considered when determining the interval size information). The mapping of the state variable values using the look-up table can be seen as an important and direct step for deriving the interval size information based on the state variable values. Optionally, one or more additional mappings and / or a combination of mapping results can follow the look-up table based mapping of the first state variable value and the second state variable value when deriving the interval size information. Optionally, a probability value can be obtained as an intermediate quantity using the look-up table based mapping of the first state variable value and the second state variable value. Further, different concepts for deriving the interval size information from a result of the look-up table based mapping of the first state variable value and a result of the look-up table based mapping of the second state variable value are possible.

[0015] In summary, this embodiment according to the present application provides for deriving interval size information based on using (at least) two look-up table based mappings of first state variable values and second state variable values. Thus, state variable values associated with different adaptation time constants can be mapped individually, but using the same mapping rule (defined by the look-up table), which makes the resource requirements for determining the interval size information rather small but still allows to take into account (e.g., to weight) statistics of symbols of a plurality of previous processes (e.g., encodings or decodings) obtained by different adaptation time constants or statistical computation time constants.

[0016] In a preferred embodiment, the arithmetic encoder is configured to map the first state variable value or a scaled and / or rounded version thereof onto a first probability value (p k 1) using a look-up table, and wherein the arithmetic encoder is configured to map the second state variable value or a scaled and / or rounded version thereof onto a second probability value (p k 2 ) using a look-up table, and wherein the arithmetic encoder is configured to obtain a combined probability value (pk) using the first probability value and the second probability value (e.g., using a weighted sum or using a weighted average).

[0017] Using such a concept, a combined probability value describing a probability of a symbol (e.g., a probability of a symbol "1" or a probability of a symbol "0") can be derived rather easily based on a first state variable value and based on a second state variable value. For example, a first state variable value after a symbol of a previous process (e.g., encoding or decoding) with a first flexibility can be mapped onto a first probability value, and a second state variable value after a symbol of a previous process (e.g., encoding or decoding) with a second flexibility can be effectively mapped onto a second probability value. Thus, trends of symbols of previous processes occurring on different time scales can be taken into account, and still the combined probability value can be derived in a very efficient way. The first state variable value and the second state variable value allow to track trends of symbols of previous processes with different adaptation time constants, and the mapping of the state variable values onto the "partial" probability values (first probability value and second probability value) contributing to the combined probability value can be performed in a very resource efficient way using the above described concept.

[0018] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value in a first direction (e.g. to become more positive) if the symbol to be encoded takes a first value (e.g. "1"), and to change the state variable value in a second direction (e.g. to become more negative) if the symbol to be encoded takes a second value (e.g. "0") different from the first value (e.g. such that the state variable value can take positive and negative values), wherein the arithmetic encoder is configured to determine the entry of the look-up table to be evaluated in dependence on the absolute value of the respective state variable value (if s k i > 0, is s k i , else is -s k i (e.g. depending on a scaled and rounded version of the absolute value of the state variable value) determines the entry of the look-up table to be evaluated.

[0019] By using state variable values which can take negative and positive values (e.g. depending on the history of previously processed symbols, and e.g. in a symmetric manner for opposite previously processed symbols), and by selecting the entry of the look-up table in dependence on the absolute value of the respective state variable value, the efficiency of the concept can even be improved. For example, it is no longer necessary to have a dedicated entry of the look-up table for each possible value (or, quantized value) of the state variable value. Instead, an entry of the look-up table can be used both for a positive state variable value and for a corresponding negative state variable value (i.e. for "inverted" state variable values having equal absolute values but opposite signs). Thus, the number of entries of the look-up table can remain small, and a determined "symmetry" with respect to the interval size information for opposite previously processed symbols can be exploited.

[0020] In a preferred embodiment, the arithmetic encoder is configured to set the first probability value (p k 1) to a value provided by the look-up table (e.g. to and wherein the arithmetic encoder is configured to set the first probability value (p k 1) to a value obtained by subtracting the value provided by the look-up table from a predetermined value (e.g. 1) (e.g. ) if the first state variable value takes a second sign (e.g. a negative sign).

[0021] Using such a mechanism, the number of entries of the look-up table can remain small (e.g. as the entry of the look-up table is only selected based on the absolute value of the respective state variable value), while still a "complementary" probability value for the opposite sign of the respective state variable value can be obtained. Thus, a high degree of resource efficiency and low computational complexity is achieved for determining the probability value.

[0022] In a preferred embodiment, the arithmetic encoder is configured to determine two or more probability values p k i :

[0023]

[0024] wherein LUT1 is a look-up table containing probability values; wherein is a floor operator; wherein s k i is the i-th state variable value; and wherein a k i is a weighting value associated with the i-th state variable value (e.g. a weighting value that adapts the numerical range of the i-th state variable value to the number of entries of the look-up table).

[0025] It has been found that such a calculation is computationally efficient and keeps the resource requirements comparably small.

[0026] In a preferred embodiment, the arithmetic encoder is configured to determine two or more probability values p k i :

[0027]

[0028] wherein LUT1 is a look-up table containing probability values; wherein is a floor operator; wherein s k i is the i-th state variable value; and wherein a k i is a weighting value associated with the i-th state variable value (e.g. a weighting value that adapts the numerical range of the i-th state variable value to the number of entries of the look-up table).

[0029] It has been found that such a calculation is advantageous in some situations depending on the actual numerical representation. In particular, the floor operator is applied to the same operand, regardless of the sign of the state variable value. In particular, it is not necessary to remove the sign of the operand of the floor operator, which saves some computational complexity. Instead, the negation is applied only to the result of the floor operator, which is typically an integer value. Thus, the complexity of applying the negation operator is particularly small. In other words, the concept as described herein also comes with a particularly low complexity.

[0030] In a preferred embodiment, the arithmetic encoder is configured to determine a combined probability value p k i from a plurality of probability values p k :

[0031]

[0032] where N is the number of probability values considered (and can equal the number of state variable values considered); and where b k i are weighting values (e.g. weighting factors controlling the influence of the respective state variable value on the combined probability value) (where b k i are preferably integer powers of 2, and where the ratio between two different b k i are preferably integer powers of 2).

[0033] By applying different weightings to the probability values obtained based on different state variable values, different influences of short-term statistics and long-term statistics on the combined probability value can be taken into account, and particularly meaningful combined probability values can be obtained.

[0034] In a preferred embodiment, the arithmetic encoder is configured to map the first state variable value or a scaled and / or rounded version thereof onto a first subinterval width value (R*p k 1) using a two-dimensional look-up table whose entries depend on the first state variable value (e.g. determine first look-up table entry coordinates, e.g. using a probability index i) and are addressed (e.g. determine second look-up table entry coordinates) depending on encoding interval size information (e.g. R, or an index j derived from R) describing the size of the encoding interval in which the arithmetic encoding precedes the encoding of the symbol, wherein the arithmetic encoder is configured to map the second state variable value or a scaled and / or rounded version thereof onto a second subinterval width value (R*p k 2 using a two-dimensional look-up table whose entries depend on the second state variable value (e.g. determine first look-up table entry coordinates) and are addressed (e.g. determine second look-up table entry coordinates) depending on encoding interval size information (e.g. R) describing the size of the encoding interval in which the arithmetic encoding precedes the encoding of the symbol, wherein the arithmetic encoder is configured to obtain a combined subinterval width value using the first subinterval width value and the second subinterval width value (e.g. using a weighted sum or using a weighted average).

[0035] By using such a two-dimensional look-up table reflecting multiplications of a plurality of different probability values with a plurality of different interval size values, the computational complexity can be reduced since the multiplication operations can be saved. For example, one of the two indices (row index and column index) indicating an entry of the two-dimensional look-up table is defined by the individual state variable values (or, scaled and / or rounded versions thereof) and the second index is determined by the current (total) coding interval size. Thus, based on the first index and the second index, an element (entry) of the two-dimensional look-up table can be uniquely identified and the identified element typically reflects the product of the probability value associated with the individual state variable value and the coding interval size associated with the second table index. Thus, by spending some memory (which can be read-only memory in some cases) for the two-dimensional look-up table, the multiplication operations can be saved which can be advantageous in terms of computational resources and in terms of energy consumption.

[0036] In a preferred embodiment of the arithmetic encoder, the two-dimensional look-up table can be represented as a binary product between a first one-dimensional vector (forming a one-dimensional look-up table) whose entries comprise probability values for different value intervals of the value range of the first state variable value and the second state variable value or scaled and / or rounded versions thereof (Qr2(R)) and a second one-dimensional vector whose entries comprise quantization levels for coding interval size information. |s k |·a k

[0037] By using such a three-dimensional look-up table, the multiplication operations between different pairs of probability values and coding interval sizes can be reflected by the table. Thus, by selecting appropriate elements of the two-dimensional look-up table, the multiplication operations can be saved. Moreover, such an approach can be used to obtain the entries of the two-dimensional look-up table in a very simple way.

[0038] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a base look-up table (Base TabLPS) wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or rounded versions of the elements of the base look-up table and wherein a second group of elements (or, block; e.g., "lower half") of the two-dimensional look-up table are scaled and rounded versions of the elements of the base look-up table.

[0039] ​By using such a method, an approximate index increase or decrease of the elements of the two-dimensional look-up table can be obtained. For example, by defining the elements of the two-dimensional look-up table such that the second set of elements of the two-dimensional look-up table is substantially (e.g. except for a bias caused by a rounding) a scaled version of the elements of the first set of elements of the two-dimensional look-up table, a highly consistent two-dimensional look-up table can be obtained. And, it should be noted that such a method can easily be used to obtain the elements of the two-dimensional look-up table.

[0040] In a preferred embodiment of the arithmetic encoder, the second set of elements of the two-dimensional look-up table is a right-shifted version of the elements of the base look-up table.

[0041] By using such a method, the elements of the two-dimensional look-up table can be obtained in a particularly efficient manner, since a right-shift operation can be performed very easily. Moreover, a right-shift operation causes a proper scaling and a rounding operation can also be performed in a very efficient manner.

[0042] In a preferred embodiment of the arithmetic encoder, the probability index (Qp2(p LPS ) or i)) determines whether an element of the first set of elements of the two-dimensional look-up table is evaluated or an element of the second set of elements of the two-dimensional look-up table is evaluated, wherein a first range (e.g. between 0 and μ-1) of the probability index (e.g. obtained by quantizing a probability value (e.g. p LPS ) is associated with the elements of the first set of elements and wherein a second range (e.g. greater than or equal to μ) of the probability index (e.g. obtained by quantizing a probability value (e.g. p LPS ) using a quantization function Qp2(.)) is associated with the elements of the second set of elements.

[0043] By using such a concept, it can be distinguished depending on the probability index, which can be based on the respective state variable value for example, whether an element of the first set of elements or an element of the second set of elements should be used. For example, a probability value obtained using a mapping of a first state variable value or a probability value obtained using a mapping of a second state variable value can be used to determine which element of the two-dimensional look-up table should be evaluated (and in particular, whether an element of the first set of elements of the two-dimensional look-up table or an element of the second set of elements of the two-dimensional look-up table should be evaluated).

[0044] And, using this concept, the respective elements of the two-dimensional look-up table can be determined based on the "base look-up table in operation", the number of elements of which is smaller than the number of table elements, which can be addressed by a probability index and an encoding interval size index.

[0045] In a preferred embodiment of the arithmetic encoder, a division residue (i % μ) of a division between the probability index (i) and the first size value (e.g., μ; wherein the size value e.g. describes an extension of the base lookup table in the first direction) and an interval size index (e.g. obtainable based on the interval size information R; e.g. using a quantization operation Qr2(.) (e.g., j)) determines which element of the base lookup table is used to obtain an element of the two-dimensional lookup table.

[0046] By using this concept, an appropriate element of the base lookup table can be selected, although the extension of the base lookup table in the first direction is smaller than the number of possible probability index values. By evaluating a division residue of a division between the probability index and the first size value (which can describe an extension of the base lookup table in the first direction), an element of the base lookup table can be reused for two or more different probability index values (which can differ by the first size value, for example). Thus, for example in case of using different scaling, an entry of the base lookup table can be used twice for two probability index values which differ by the first size value. Thus, the evolution of the probability index values can be described with the two-dimensional lookup table in general, wherein the evolution in a second range of probability index values is a scaled version (e.g. accepting a rounding effect) when compared to the evolution in a first range of probability index values.

[0047] In a preferred embodiment, the arithmetic encoder is configured to obtain an element of the two-dimensional lookup table (RangTabLPS) according to

[0048]

[0049] wherein BaseTabLPS is a base lookup table of size μ x λ; wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information (e.g. describing a current coding interval size); wherein % is a division residue operation; wherein / is a division operation; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down rounding operation, wherein a is preferably a constant greater or equal to 2 and wherein b is preferably a constant greater or equal to 1 and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and how many bits of x are right shifted).

[0050] By using such a method, the interval size information that can be defined by the result of a scaling function or a scaling operation can be obtained in a memory efficient way, in particular. For example, the "BaseTabLPS" look-up table can be particularly small, since its first dimension μ is typically smaller than the range of values of the table index i associated with the probability information, and since its second dimension λ can be equal to the number of different interval sizes that are possible described by the interval size information. Moreover, the scaling function can be implemented in an efficient way, in particular, since the number of different scaling factors defined by the down- rounding operation of the quotient of i and μ is relatively small. For example, if the range of the division between i and μ is between 0 and a maximum value that is smaller than 2, only two different scaling operations can be performed. For example, there can be only two, three or four different scaling options (depending on the quotient between i and μ), and these scaling options can be implemented efficiently using a multiplication with only a few pre-determined values or even using only a shift operation.

[0051] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes interval sizes for a set of a plurality of probability values (e.g. denoted by the index i) and for a given (reference) encoding interval size, and wherein scaling is used to derive the elements of the two-dimensional look-up table for probability values not in the set of a plurality of probability values and / or for encoding interval sizes different from the given encoding interval size from the probability table.

[0052] Using such a method, different interval sizes can often be related to each other by scaling, depending on the difference between the associated probability values and / or depending on the difference between the associated encoding interval sizes. In other words, if the two-dimensional look-up table does not comprise an element that fits the currently considered probability value and / or the currently considered encoding interval size, an appropriate interval size can still be obtained, wherein another element of the two-dimensional look-up table is scaled accordingly (e.g. depending on the currently considered probability value and / or depending on the currently considered encoding interval size).

[0053] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table are obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) that depends on the encoding interval size (R) and a second scaling of the result of the first scaling that depends on whether the element associated with the current probability value (denoted by the index i) is included in the set of probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table).

[0054] Thus, an appropriate entry of the probability table can be used "on the fly" and scaled to obtain an element of the two-dimensional look-up table, wherein the "probability table" evaluated is typically significantly smaller than the two-dimensional look-up table. In other words, based on the two indices addressing an element of the two-dimensional look-up table, an appropriate element of the probability table is selected and scaled. However, in many scenarios, such a concept provides an improved balance between memory requirements and computational complexity.

[0055] In a preferred embodiment of the arithmetic encoder, a division between the probability index (e.g., i; e.g., representing the current probability value) and the first size value (e.g., μ; wherein the size value e.g. describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or the integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the second scaling. determining a scaling factor used in the second scaling and / or the encoding interval size determines a multiplication scaling factor (Qr2(R)) of the first scaling.

[0056] Using such a concept, a small probability table representing the interval sizes in only a (relatively small) portion of the two-dimensional grid of probability indices and encoding interval size indices can be used, which can save memory space. The appropriate interval size information can then be obtained by the above-described selection of an element of the probability table and also by the above-described squaring of the selected element of the probability table.

[0057] In a preferred embodiment, the arithmetic encoder is configured to obtain an element RangeTabLPS[i][j] of the two-dimensional look-up table according to

[0058]

[0059] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division remainder operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the range of values of I is typically larger than μ); wherein R is the interval size (or, the current encoding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0060] By using such a concept for obtaining an appropriate element of a two-dimensional look-up table, which can represent or which can be equal to the interval size information, an excellent balance between memory requirements and computational complexity can be obtained. The table "probTabLPS" can for example be a one-dimensional table, wherein the number of elements of the table can be smaller than the number of different possible values of the table index i. However, by scaling the product of a selected element of the probability table probTabLPS and the scaling factor Qr2(R) depending on the interval size R, a good accuracy can be achieved and the possible rounding errors can be made reasonably small. Moreover, since the scaling is performed on an integer value obtained by a "round down" operator, an efficient scaling concept can be used, which can for example be defined by integer multiplication or integer division or a bit shift operation. Thus, the computational load is very small.

[0061] In a preferred embodiment, the arithmetic encoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to the following formula:

[0062]

[0063] wherein i is a table index associated with the probability information; wherein j is a table index associated with the interval size information; wherein % is a division remainder operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the range of values of I is typically larger than μ); wherein R is the interval size (or, the current encoding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (for example, defined as wherein is a round down operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether a right shift of x is performed and how many bits are right shifted.

[0064] This method for obtaining the interval size information is also particularly efficient and has been found to lead to high quality results for the interval size information (obtained as a result of the first scaling and the second scaling).

[0065] In a preferred embodiment of the arithmetic encoder, wherein the division remainder of the division between the probability index (for example, i; for example, representing the current probability value) and the first size value (for example, μ; wherein this size value for example describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determining a scaling factor used in the first scaling and / or wherein the coding interval size (R) determines a multiplicative scaling factor (Qr2(R)) of the second scaling.

[0066] By selecting elements of the probability table (which can be a one-dimensional probability table) depending on the above-mentioned division residue, the fact that, apart from scaling, the interval sizes are substantially similar in different ranges of the probability index can be exploited. Thus, the probability table only reflects values in a single range of the probability index, and a first scaling is used to obtain interval size values for other ranges of the probability index. The second scaling adapts the values represented by the probability table or the values obtained based on the probability table using the first scaling to the coding interval size in order to in turn obtain appropriate interval size information.

[0067] Thus, a good balance between memory consumption, computational complexity and accuracy can be obtained, wherein, for example, if the first size value is appropriately chosen (e.g. a power of two), the division residue and the integer division result can be obtained in a computationally extremely simple way.

[0068] In a preferred embodiment, the arithmetic encoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to:

[0069]

[0070] wherein i is a table index associated with the probability information; wherein j is a table index associated with the interval size information; wherein % is a division residue operation; wherein / is a division operation (e.g. providing an integer result); wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the range of values of I is typically larger than μ); wherein R is the interval size; wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0071] This calculation rule implements the previously mentioned concepts in an extremely efficient way.

[0072] In a preferred embodiment of the arithmetic encoder, a two-dimensional look-up table can be represented as a binary product between a first one-dimensional vector (forming a one-dimensional look-up table) whose entries comprise a first state variable value and a second state variable value or a scaled and / or rounded version thereof and a second one-dimensional vector (Qr2(R)) whose entries comprise a probability value for a different value interval of the value range of the coding interval size information The second one-dimensional vector comprises entries comprising a quantization level for encoding the interval size information.

[0073] Such a two-dimensional look-up table can be well used for efficiently deriving the interval size information based on the state variable values and based on the coding interval size information. The look-up within the two-dimensional look-up table corresponds to a mapping of the state variable values onto probability values and also to a multiplication of the obtained probability values with the coding interval size. Thus, the interval size information can be easily obtained which can be equal to a selected entry of the two-dimensional look-up table, wherein the respective element of the two-dimensional look-up table can be selected depending on the respective state variable values and depending on the coding interval size information (wherein the respective state variable values can determine a first index of the elements of the two-dimensional look-up table and wherein the coding interval size information can determine a second index).

[0074] In a preferred embodiment, the arithmetic encoder is configured to calculate a first sub-interval width value and a second sub-interval width value (R*p respectively from the first state variable value and the second state variable value or a scaled and / or rounded version thereof k by using a one-dimensional look-up table (LUT4) whose entries comprise a probability value for a different value interval of the value range of the first state variable value and the second state variable value or a scaled and / or rounded version thereof k by mapping the first state variable value and the second state variable value (s onto a first probability value and a second probability value and quantizing a coding interval size information amount (e.g. R) describing a size of a coding interval of the arithmetic encoding before the encoding of the symbol onto a quantization level; determining a product between the first probability value and the second probability value on the one hand and the quantization level on the other hand (by looking up a pre-computed product or by multiplication); and using the first sub-interval width value and the second sub-interval width value for obtaining a combined sub-interval width value (e.g. using a weighted sum or using a weighted average).

[0075] ​It has been found that using such a method is also very effective in certain conditions. By deriving the first subinterval width value based on the first state variable value only (without taking the second state variable value into account) and by calculating the second subinterval width value based on the second state variable value only (without taking the first state variable value into account), the substantial separate processing of the state variable values using different adaptation time constants is maintained by most of the processing. Only in the last stage, the first subinterval width value and the second subinterval width value are combined to obtain a combined subinterval width value that brings a high accuracy and avoids degradation, which would occur in some conditions if the first state variable value and the second state variable value were combined too early.

[0076] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the encoding interval size information by applying a logical right shift to the encoding interval size information.

[0077] This concept is particularly easy to implement, since a logical right shift only requires minimal computational resources.

[0078] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the encoding interval size information R by where u, v and w are parameters.

[0079] It has been found that such a quantization can also be very easy to implement. In particular, if the parameters u, v and u, v and W are chosen to be integer values (or, integer values greater than 1), the computational effort is minimal.

[0080] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table monotonically decrease with an increase of the first state variable value and the second state variable value or the scaled and / or rounded versions thereof .

[0081] Using a monotonically decreasing entries of a one-dimensional lookup table has shown to bring good results for interval size information.

[0082] In a preferred embodiment of the arithmetic decoder, wherein different value intervals for the first state variable value and the second state variable value or the scaled and / or rounded versions thereof are of equal size.

[0083] Using such an equal size design of value intervals allows for a simple quantization. Furthermore, the equal size design of value intervals allows for determining the elements of the lookup table in moderate effort in operation.

[0084] In a preferred embodiment of the arithmetic encoder, wherein different value intervals for the first state variable value and the second state variable value or the scaled and / or rounded versions thereof the different value intervals of the value range of the state variable are of equal size.

[0085] Such monotonic decrease of the entries of the one-dimensional look-up table can represent an exponential decay with good accuracy.

[0086] An arithmetic encoder for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to derive interval size information (p i k ) for an arithmetic encoding of one or more symbol values to be encoded based on a plurality of state variable values (s k , R*p k ) associated with a given context model indicated by an index k, wherein the arithmetic encoder is configured to derive a combined state variable value (s i k ) (e.g. can be a weighted sum of the state variable values) based on the plurality of (individual) state variable values (s k ) and wherein the arithmetic encoder is configured to use a look-up table to map the combined state variable value (s k ) or a scaled and / or rounded version thereof in order to obtain said interval size information describing an interval size for an arithmetic encoding of one or more symbols to be encoded.

[0087] The embodiment according to the present invention is based on the idea that a high efficiency in determining the interval size information is obtained if the combined state variable value is determined before performing the mapping using the look-up table. Thus, it is no longer necessary to perform separate look-up table lookups using two (or, more) state variable values. Instead, a single table lookup can be sufficient to determine the interval size information. In particular, it has been found that a combination of the first and second state variable values before performing the look-up table lookup severely reduces the quality of the interval size information in many conditions.

[0088] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of the state variable values in order to obtain the combined state variable value.

[0089] It has been found that calculating a weighted sum of the state variable values is an efficient way of determining the combined state variable value and also well suited to take into account different relevance of the two state variable values caused by different adaptation time constants used in deriving the state variable values.

[0090] In a preferred embodiment, the arithmetic encoder is configured to determine a rounded value the sum of the scaled values in order to obtain a combined state variable value (s k ), which rounded value is obtained by rounding the product of the state variable value and the associated weighting value .

[0091] It has been found that performing a rounding of the scaled values prior to performing the summing leads to particularly interesting results. Negligible contributions of one of the state variable values are eliminated by the rounding and do not influence the combined state variable value. Thus, a highly reliable result can be obtained and the combined state variable value is typically rounded to an integer value which well suits to serve as an index for selecting an element of a look-up table.

[0092] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value s k in accordance with the following formula:

[0093]

[0094] where s k 2is a state variable value, where N is the number of state variable values under consideration,

[0095] where is a down-rounding operator, where d k i is a weighting value associated with a state variable value (e.g. a weighting factor controlling the influence of the respective state variable value on the combined state variable value) (where d k i is preferably an integer power of 2 and where the ratio between two different d k i is preferably an integer power of 2) (where the ratio between two different d k i is preferably larger than or equal to 8).

[0096] The concept for deriving the combined state variable value leads to a combined state variable value which is highly interesting, as explained before.

[0097] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value in a first direction (e.g. to become more positive) if the symbol to be encoded takes a first value (e.g. "1") and to change the state variable value in a second direction (e.g. to become more negative) if the symbol to be encoded takes a second value different from the first value (e.g. "0") (e.g. such that the state variable value can take positive and negative values) and wherein the arithmetic encoder is configured to determine the combined state variable value in dependence on the absolute value of the combined state variable value (if s k i > 0, then sk , else -s k ) (e.g. depending on a scaled and rounded version of the absolute value of the combination state variable value) determines an entry of the look-up table to be evaluated.

[0098] This concept for determining the state variable values (e.g. for determining the first state variable value and for determining the second state variable value) leads to the same advantages as in case of using separate mappings for the first state variable value and the second state variable value.

[0099] In a preferred embodiment, the arithmetic encoder is configured to set the probability value (p k ) to a value provided by the look-up table (e.g. to ) if the combination state variable value takes a first sign (e.g. a positive sign), and wherein the arithmetic encoder is configured to set the probability value (p k ) to a value obtained by subtracting the value provided by the look-up table from a predetermined value (e.g. to

[0100] This concept for mapping the combination state variable value onto the probability value is efficient since the size of the look-up table can be reduced. In particular, the number of elements of the look-up table can be reduced since the same element of the look-up table is associated with a given positive combination state variable value and a negative version of the given (positive) combination state variable value. In other words, in the given concept, the absolute value of the combination state variable value determines which element of the look-up table is evaluated to provide the probability value.

[0101] However, setting the probability value to the value provided by the look-up table or to the value obtained by subtracting the value provided by the look-up table from a predetermined value depending on the sign still takes the sign of the combination state variable value into account in an appropriate and efficient way. Thus, a meaningful probability value can be obtained based on the combination state value with low computational complexity.

[0102] In a preferred embodiment, the arithmetic encoder is configured to determine the combination probability value p k according to

[0103]

[0104] wherein LUT2 is a look-up table containing probability values; wherein is a downward rounding operator; wherein s k is the combination variable value; and wherein a k i is a weighting value associated with the combination state variable value (e.g. a weighting value that adapts the numerical range of the i-th state variable value to the number of entries of the look-up table).

[0105] based on the combined state variable value s k The concept of determining the combined probability value p from the combined state variable value s in a computationally efficient way implements the ideas outlined before.

[0106] In a preferred embodiment, the arithmetic encoder is configured to determine the combined probability value p from k :

[0107]

[0108] wherein LUT2 is a look-up table containing probability values; wherein is a down-rounding operator; wherein s k is the combined variable value; and wherein a k i is a weighting value associated with the combined state variable value (e.g. a weighting value that adapts the numerical range of the ith state variable value to the number of entries of the look-up table).

[0109] In this concept, there is no absolute value computation of the scaled combined state variable value s k Instead, there is only a “down-rounding” operation that is applied to the scaled (“weighted”) combined state variable value, which can in some cases be implemented with less effort than the absolute value formation. The taking of the negative is applied only to integer values that are obtained by the down-rounding of the weighted combined state variable value (down-rounding operator). However, taking the negative of an integer value is usually less complex than taking the negative of a fractional value or of a value in floating point representation. Thus, the concept discussed here can in some cases help to reduce complexity.

[0110] In a preferred embodiment, the arithmetic encoder is configured to map the combined state variable value or a scaled and / or rounded version thereof onto sub-interval width values (R*p k ) using a two-dimensional look-up table whose entries are addressed depending on the combined state variable value and depending on coding interval size information (e.g. R) that describes the size of the coding interval before the encoding of the symbol.

[0111] Using this concept, the mapping of the combined state variable value onto the combined probability value and the multiplication of the combined probability value with the coding interval size can be combined into a single look-up table lookup operation. Thus, a two-dimensional look-up table is required, but the multiplication operation is saved. The entries of the two-dimensional look-up table can be pre-computed, such that the combined load on the run-time remains very low. Instead, the first table index can be determined based on the combined state variable value or a scaled and / or rounded version thereof, and the second table index can be determined based on the coding interval size information (e.g., using rounding or quantization). The first step index and the second state index can uniquely mark an element of the two-dimensional look-up table, and the marked element of the two-dimensional look-up table can be used as the sub-interval width value (or, as the interval size information). Thus, a very efficient concept is obtained, saving computational complexity in case sufficient memory for the look-up table is available.

[0112] In a preferred embodiment of the arithmetic encoder, the two-dimensional look-up table can be represented as a binary product between a first one-dimensional vector (LUT4 [...]; forming a one-dimensional look-up table) whose entries comprise probability values for different value intervals of the value range of the combined state variable value or a scaled and / or rounded version thereof and a second one-dimensional vector (Qr2(R)) whose entries comprise quantization levels for the coding interval size information.

[0113] Such a two-dimensional look-up table leads to very good results. In particular, all elements of the two-dimensional look-up table represent a multiplication of individual probability values associated with the combined state variable value and the coding interval size. Thus, the two-dimensional look-up table described herein eliminates the need for multiplication, which can be seen as very resource efficient.

[0114] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a base look-up table (Base TabLPS), wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or are rounded versions of elements of the base look-up table, and wherein a second group of elements (or, block; e.g., "lower half") of the two-dimensional look-up table are scaled and rounded versions of elements of the base look-up table.

[0115] By defining the elements of the two-dimensional look-up table based on the basic look-up table, the two-dimensional look-up table can be generated in a very simple way. Moreover, since the second set of elements of the two-dimensional look-up table is a scaled and rounded version of the elements of the basic look-up table (while the elements of the first set of elements of the two-dimensional look-up table are identical to the elements of the basic look-up table or are rounded versions of the elements of the basic look-up table), the exponential evolution of the elements in a row or column of the two-dimensional look-up table is well reflected. By the concept that the second block of elements of the two-dimensional look-up table is essentially a scaled version of the first block of elements of the two-dimensional look-up table (except for the rounding effect), the appropriate characteristics for mapping the combination state variable values onto the interval size information can be reflected.

[0116] In a preferred embodiment of the arithmetic encoder, the second set of elements of the two-dimensional look-up table is a right-shifted version of the elements of the basic look-up table.

[0117] This allows a simple generation of the entries (elements) of the two-dimensional look-up table.

[0118] It has been found that right-shifted elements of the basic look-up table are a very effective concept for a combined scaling and rounding operation.

[0119] In a preferred embodiment of the arithmetic encoder, the probability index (Qp2(p LPS ) or i) determines whether an element of the first set of elements of the two-dimensional look-up table is evaluated or an element of the second set of elements of the two-dimensional look-up table is evaluated, wherein a first range (e.g. between 0 and μ-1) of the probability index (e.g. obtained by quantizing the probability value (e.g. p LPS ) using a quantization function Qp2(.)) is associated with the elements of the first set of elements and wherein a second range (e.g. greater than or equal to μ) of the probability index (e.g. obtained by quantizing the probability value (e.g. p LPS ) using a quantization function Qp2(.)) is associated with the elements of the second set of elements.

[0120] By using the probability index, which can be derived directly from the combination state variable value (without using the probability value as an intermediate quantity) or which can be derived using a combined probability value based on the combination state variable value, the element of the two-dimensional look-up table can be selected very effectively. Moreover, the probability index is used for switching between using an element of the first set of elements and an element of the second set of elements, which allows an efficient determination of the element of the two-dimensional look-up table in operation.

[0121] In a preferred embodiment of the arithmetic encoder, the division residue (i % μ) of a division between the probability index (i) and the first size value (e.g. μ; wherein the size value describes the extension of the basic look-up table in the first direction, for example) and the interval size index (e.g. which can be obtained based on the interval size information R, for example, using a quantization operation Qr2(.) (e.g. j)) determines which element of the basic look-up table is used for obtaining the element of the two-dimensional look-up table.

[0122] In a preferred embodiment, the arithmetic encoder is configured to obtain an element of the two-dimensional look-up table (RangTabLPS) according to

[0123]

[0124] where BaseTabLPS is a base look-up table of size μ x λ; where i is a table index associated with the probability information; where j is a table index associated with the interval size information (e.g., describing the current coding interval size); where % is a division remainder operation; where / is a division operation; where Scal(x, y) is a scaling function (e.g., defined as where is a down-rounding operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether and how many bits of x are right-shifted.

[0125] By evaluating the division remainder to determine which element of the base look-up table is used to obtain an element of the two-dimensional look-up table, the elements of the two-dimensional look-up table can be determined on the fly with very high efficiency. In particular, by using the division remainder to reflect the fact that the two-dimensional look-up table comprises two or more groups of elements that are based on identical elements of the base look-up table, the division remainder is used to determine which element of the base look-up table is used to obtain an element of the two-dimensional look-up table. In other words, by taking into account the division remainder, the periodic relationship between the elements of the two-dimensional look-up table and the elements of the base look-up table is well reflected, since the division remainder is also periodic with increasing probability index.

[0126] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a probability table (probTabLPS), where the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) coding interval size, and where scaling is used to derive elements of the two-dimensional look-up table for probability values not in the set of multiple probability values and / or for coding interval sizes different from the given coding interval size from the probability table.

[0127] The concept is based on the same considerations as the corresponding concept described for the case of separate mappings for state variable values.

[0128] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of a plurality of probability values (e.g. denoted by index i) and an interval size for a given (reference) encoding interval size, and wherein a scaling is used to derive the elements of the two-dimensional look-up table for probability values not in the set of a plurality of probability values and / or for encoding interval sizes different from the given encoding interval size from the probability table.

[0129] It has been found that the determination of the elements of the two-dimensional look-up table in such an operation includes an especially high resource efficiency. Moreover, it is noted that the remarks made above with respect to the corresponding algorithm used within the context of the separate mapping of the first state variable value and the second state variable value apply as well. By using a probability table, which is typically smaller (e.g. includes less elements) than the two-dimensional look-up table, as a basis for determining the elements of the two-dimensional look-up table, a very high efficiency can be obtained. For example, the probability table can represent a mapping of different probability values and different (quantized) encoding interval sizes over a significant range, and can thus help to avoid multiplications other than simple scaling (wherein "simple" scaling can be implemented using a shift operation, for example).

[0130] A scaling is used to derive the elements of the two-dimensional look-up table for one or more probability values not in the set of a plurality of probability values and for one or more encoding interval sizes different from the given encoding interval size from the probability table. Thus, it is sufficient to have a very small probability table, which can include only one row or one column, for example. So, the number of elements of the probability table can even be smaller than the number of different possible probability values (i.e. smaller than the number of different possible probability indices of the two-dimensional look-up table). Moreover, it is noted that the scaling depends on the probability value and / or on the encoding interval size. The scaling can be performed using a very simple mechanism, for example, if the size of the probability table is chosen appropriately, as using a bit shift operation. Such "simple" scaling operations based on bit shift operations require significantly less computational resources than "usual" multiplications with arbitrary variable operands (e.g. different from powers of two).

[0131] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table are obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the encoding interval size (R) and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (denoted by index i) is included in the set of probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table).

[0132] It has been found that this calculation of elements of a two-dimensional look-up table is particularly efficient. Also, reference is made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first state variable value and the second state variable value.

[0133] In a preferred embodiment of the arithmetic encoder, a division residue (i % μ) of a division between the probability index (e.g., i; e.g., representing the current probability value) and the first size value (e.g., μ; wherein the size value e.g. describes an extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein an integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. determining a scaling factor used in the second scaling and / or wherein the coding interval size determines a multiplication scaling factor (Qr2(R)) of the first scaling.

[0134] With respect to this functionality, also reference is made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first state variable value and the second state variable value.

[0135] In a preferred embodiment, the arithmetic encoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to:

[0136]

[0137] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the value of I is typically larger than μ); wherein R is the interval size (or, the current coding interval size); wherein Qr2(R) is a scaling factor dependent on R; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0138] With respect to this functionality, also reference is made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first state variable value and the second state variable value.

[0139] In a preferred embodiment of the arithmetic encoder, the element of the two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of a probability table (probTabLPS[i%u]) depending on whether the element associated with the current probability value (denoted by index i) is included in the set of probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table) and using a second scaling of the result of the first scaling depending on the coding interval size (R).

[0140] With respect to this functionality, also reference is made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first state variable value and the second state variable value.

[0141] In a preferred embodiment of the arithmetic encoder, the division residue of the division between the probability index (e.g. i; e.g. representing the current probability value) and the first size value (e.g. u; wherein the size value e.g. describes the extension of the probability table) determining which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determining the scaling factor used in the first scaling and / or wherein the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.

[0142] With respect to this functionality, also reference is made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first state variable value and the second state variable value, wherein a combined state variable value or a combined probability value is used instead of the individual separate state variable values or the individual separate probability values.

[0143] In a preferred embodiment, the arithmetic encoder is configured to obtain the element RangeTabLPS[i][j] of the two-dimensional look-up table according to:

[0144]

[0145] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation (e.g. providing an integer result); wherein probTabLPS[] is the probability table; wherein u is the number of elements of the probability table (wherein the range of values of I is typically larger than u); wherein R is the interval size; wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x,y) is a scaling function (e.g. defined as wherein is a down-round operation, wherein a is preferably a constant greater than or equal to 2, and wherein b is preferably a constant greater than or equal to 1, and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and by how many bits x is right-shifted.

[0146] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values above, wherein the combined state variable value replaces the individual state variable values, and wherein the combined probability value replaces the individual probability values.

[0147] In a preferred embodiment, the arithmetic encoder is configured to calculate the sub-interval width value (R*p k ) from the combined state variable value or a scaled and / or rounded version thereof by using a one-dimensional look-up table (LUT4) whose entries comprise probability values for different value intervals of the value range of the combined state variable value or a scaled and / or rounded version thereof mapping the combined state variable value (sk) or a scaled and / or rounded version thereof quantizing the size of the coding interval describing the coding interval of the arithmetic coding preceding the encoding of the symbol (e.g. R) to a quantization level; calculating the product between the combined probability value and the quantization level (by pre-computing a look-up of the product, or by multiplication).

[0148] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values above, wherein the combined state variable value replaces the individual state variable values, and wherein the combined probability value replaces the individual probability values.

[0149] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the coding interval size information by applying a logical right shift to the coding interval size information.

[0150] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values above.

[0151] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the coding interval size information R by wherein u, v and w are parameters.

[0152] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values above.

[0153] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table monotonically decrease with increasing values of the combined state variable value or a scaled and / or rounded version thereof .

[0154] With respect to this functionality, reference is also made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values.

[0155] In a preferred embodiment of the arithmetic encoder, wherein the different value interval sizes of the value range for the combined state variable value or a scaled and / or rounded version thereof are equal.

[0156] With respect to this functionality, reference is also made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values.

[0157] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table monotonically decrease with increasing values of the combined state variable value or a scaled and / or rounded version thereof at a decreasing rate.

[0158] With respect to this functionality, reference is also made to the above discussion of the corresponding functionality provided in the context of the separate mapping of the first and second state variable values.

[0159] In a preferred embodiment of the arithmetic encoder, the lookup table defines an exponential decay (e.g. falling from 0.5) (e.g. within a tolerance of + / - 10% or + / - 20%).

[0160] It has been found that an exponential decay well reflects the appropriate relationship for deriving interval size information based on a state variable value. Moreover, an exponential decay can be very efficiently represented using a lookup table, wherein even in operation it is possible to determine the elements of the lookup table with less effort.

[0161] In a preferred embodiment, the arithmetic encoder is configured to update the plurality of variable state values

[0162]

[0163] wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values, wherein A is or deviates from this equation for one or more extreme values of its argument only by being set to zero or being scaled down in magnitude to avoid an updated out of the predetermined value range, (for example, considering With greater than The range of ; that is, Quasi-quantized on; for The extreme value of may be modified by the unmodified A according to the above formula and out of its value range; to avoid this situation, the entries corresponding to these extreme values ​​can be reduced or set to zero), where offset, and is a predetermined parameter (examples are explained above).

[0164] It has been found that such an update of the state variables can be performed with high computational efficiency, wherein the mapping table can be pre-computed. For example, the state variable value can be implemented The state variable values ​​are kept within a predetermined range (e.g., between a predetermined minimum value and a predetermined maximum value). Moreover, by using an appropriate choice of the mapping table A, it is possible to achieve a good adaptation of the state variable values ​​to the statistical description of the previously processed (e.g., encoded or decoded) symbols. Furthermore, it should be noted that the adaptation time constants of the individual state variable values ​​can be adapted by an appropriate choice of the weighting values ​​m and n. Thus, the algorithm described herein can be effectively used to update the state variable values.

[0165] In a preferred embodiment, the arithmetic encoder is configured to derive the

[0166] Therefore, different concepts can be derived to update the state variable values.

[0167] According to an embodiment of the present invention, an arithmetic encoder for encoding a plurality of symbols having symbol values ​​(e.g., binary values) is created, wherein the arithmetic encoder is configured to determine one or more state variable values ​​(s1k, s2k), the one or more state variable values ​​representing statistics (e.g., statistics with different adaptation time constants in the case of a plurality of state variable values) of a plurality of previously encoded symbol values ​​(e.g., sequences of binary values ​​0 and 1), and wherein the arithmetic encoder is configured to determine one or more state variable values ​​(s1k, s2k), the one or more state variable values ​​representing statistics (e.g., statistics with different adaptation time constants) of a plurality of previously encoded symbol values ​​(e.g., sequences of binary values ​​0 and 1), and wherein the arithmetic encoder is configured to determine one or more state variable values ​​(s1k, s2k) representing one or more state variable values ​​... i k ) (e.g., associated with a given context mode, indicated by index k) to derive interval size information (p) for arithmetic coding of one or more symbol values ​​to be encoded k , R*p k), the one or more state variable values representing statistics (e.g., in case of multiple state variable values, statistics with different adaptation time constants) of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1), wherein the arithmetic encoder is configured to update the first state variable value (s k 1).

[0168] This embodiment according to the present application is based on the finding that the update of a state variable value for deriving interval size information for arithmetic encoding (e.g., encoding or decoding) can be performed with particularly good results using a look-up table, since the use of a look-up table allows an update of the state variable value which is particularly well adapted to the characteristics of the signal to be encoded or to be decoded. For example, a fine-tuning relationship between an "old" state variable value and an updated state variable value can be easily represented using a look-up table, while no extensive calculations (like, e.g., evaluations of trigonometric functions or exponential functions or logarithmic functions, etc.) need to be performed. Thus, the use of a look-up table for implementing the update of the state variable value contributes to keeping the computational complexity rather small. Ideally, only multiplication (or, simply, a bit shift operation), a rounding operation and addition are used in addition to the look-up table lookup in order to obtain the updated state variable value based on the "old" state variable value. For example, the currently processed symbol (e.g., a symbol to be encoded or a symbol to be decoded) decides which part of the mapping rule based on the look-up table is evaluated in order to obtain the updated state variable value.

[0169] In summary, it has been found that the use of a look-up table for providing an updated state variable value provides both high flexibility and low computational complexity.

[0170] In a preferred embodiment, the arithmetic encoder is configured to update a second state variable value (s k 2).

[0171] It has been found that it is advantageous to use the same look-up table for updating a second state variable value which is used for updating the first state variable value. For example, possible differences with respect to the adaptation time constants of the first state variable value and the second state variable value can be taken into account using one or more scaling factors, e.g., which can be applied to the selection of an element of the look-up table and / or to a scaling of the selected element of the look-up table. In summary, even if only a single look-up table is used for deriving two or more state variable values, the two or more state variable values can be adapted to represent different statistical characteristics of the processed symbol values (i.e., previously encoded symbol values or decoded symbol values).

[0172] In a preferred embodiment, the arithmetic encoder is configured to update the first state variable value and the second state variable value using different adaptation time constants.

[0173] By using different adaptation time constants for updating the first state variable value and the second state variable value, different statistical properties of previously processed symbols can be reflected by the state variable values. It has been found that the availability of state variable values representing statistics of processed symbols with different adaptation time constants is very helpful for an accurate adjustment of the interval sizes for the arithmetic encoding (encoding / decoding) of symbols. Moreover, it has been found that a look-up table based updating of the state variable values provides a very high reliability and a low computational complexity.

[0174] In a preferred embodiment, the arithmetic encoder is configured to selectively increase or decrease the previous state variable value by a value determined using a look-up table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value.

[0175] By using such a method, the state variable values can be adapted in a recursive manner, wherein a processed symbol (e.g. a symbol to be encoded or a previously encoded symbol or a previously decoded symbol) determines the direction of the change (increase or decrease) of the state variable value. On the other hand, the size of the adaptation (i.e. the increase or decrease) is determined by the selected look-up table entry, wherein a scaling can be applied. Thus, there is an efficient mechanism for updating the state variable values, providing a high degree of flexibility and still being very resource efficient.

[0176] In a preferred embodiment, the arithmetic encoder is configured to increase the previous state variable value by a relatively large value when compared to the previous state variable value being positive in case the symbol to be encoded takes a first value; and wherein the arithmetic encoder is configured to decrease the previous state variable value by a relatively large value when compared to the previous state variable value being negative in case the symbol to be encoded takes a second value different from the first value (this is obtained for example by a proper selection of the look-up table).

[0177] Using such a method, it is possible to obtain that the state variable value evolves towards a maximum positive value in an exponential manner and towards a minimum value in an exponential manner. This approximation towards the (positive) maximum value and towards the (negative) minimum value can be in an approximately asymptotic manner. In other words, the further the current state variable value is away from the (positive) maximum value, the larger the (increasing) step towards the (positive) maximum value is, and the further the current state variable value is away from the (negative) minimum value, the larger the (decreasing) step towards the (negative) minimum value is. Thus, it is possible to use this concept to approximate an exponential asymptotic behavior. However, it has been found that this concept is very well suited for the updating of the state variable values. In particular, it has been found that such a method is well suited for an "infinite impulse response" method for determining the state variable values.

[0178] In a preferred embodiment, the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the first state variable value, if the symbol to be encoded takes the first value, depending on a sum of a predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof and wherein the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the first state variable value, if the symbol to be encoded takes the second value, depending on a sum of the predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof (e.g. of the negated version of the previously calculated first state variable value) and wherein the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the first state variable value, if the symbol to be encoded takes the second value, depending on a sum of the predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously calculated first state variable value

[0179] Using such a method, a proper entry of the look-up table can be selected with moderate effort, taking into account the currently processed symbol. Both the previously calculated state variable value and the processed (encoded or decoded) symbol determine the selection of the entry of the look-up table and can thus determine how much the state variable value is increased or decreased when compared to the previously calculated state variable value. For example, the offset value can ensure that the sum of the offset value and the scaled (and possibly negated, depending on the processed symbol) previously calculated state variable value results in a valid look-up table index, since valid look-up table indices are usually non-negative. Using this concept, a proper look-up table index can be easily selected and the updated state variable value can be efficiently provided.

[0180] In a preferred embodiment, the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the second state variable value, if the symbol to be encoded takes the first value, depending on a sum of a predetermined (e.g. fixed) offset value (z) and the previously calculated second state variable value or a scaled and / or rounded version thereof and wherein the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the second state variable value, if the symbol to be encoded takes the second value, depending on a sum of the predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously calculated second state variable value or a scaled and / or rounded version thereof (e.g. of the negated version of the previously calculated second state variable value) and wherein the arithmetic encoder is configured to determine the index of an entry of the look-up table evaluated when updating the second state variable value, if the symbol to be encoded takes the second value, depending on a sum of the predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously calculated second state variable value

[0181] The concept for updating the second state variable value is essentially the same as the concept for updating the first state variable value, wherein e.g. the same look-up table can be evaluated to save memory resources, and wherein e.g. a different scaling value can be used when compared to updating the first state variable value, to thereby obtain a modified state variable value update characteristic. For example, different adaptation time constants for the first state variable value and for the state variable value can be obtained by using different scaling values for determining the update of the first state variable value and the update of the second state variable value.

[0182] In a preferred embodiment, the arithmetic encoder is configured to apply a first scaling value (m k 1) when determining the index of the entry of the look-up table that is evaluated when updating the first state variable value, to scale the previously calculated first state variable value (s k 1), and wherein the arithmetic encoder is configured to apply a second scaling value (m k 2) when determining the index of the entry of the look-up table that is evaluated when updating the second state variable value, to scale the previously calculated second state variable value (s k 2), wherein the first scaling value is different from the second scaling value (and wherein the first scaling value and the second scaling value are preferably integer powers of 2, and wherein the ratio between the first scaling value and the second scaling value is preferably an integer power of 2, wherein the first scaling value and the second scaling value are preferably different by a factor of at least 8).

[0183] By using different scaling values when determining the index of the entry of the look-up table that is evaluated when updating the first state variable value and when determining the index of the entry of the look-up table that is evaluated when updating the second state variable value, different adaptation time constants can be effectively realized, wherein the basic state variable value update algorithm and the used look-up table can be the same, and wherein the only significant difference can be the choice of the scaling value. This allows a large degree of resource saving to be realized.

[0184] In a preferred embodiment, the arithmetic encoder is configured to scale the value returned by the evaluation of the look-up table using a first scaling value (e.g. n k 1) when updating the first state variable value, wherein the arithmetic encoder is configured to scale the value returned by the evaluation of the look-up table using a second scaling value (e.g. n k 2) when updating the second state variable value, wherein the first scaling value is different from the second scaling value.

[0185] The described different scaling of the values returned by the evaluation of the lookup table (e.g., the selected lookup table entry) allows to effectively implement different adaptation time constants when updating the first state variable value and the second state variable value. Moreover, such scaling allows to use the same lookup table for updating the first state variable value and for updating the second state variable value, which helps to save memory resources.

[0186] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to

[0187]

[0188] where A is a lookup table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0189] It has been found that such an update mechanism for state variable values can be implemented with high computational efficiency and provides reliable results.

[0190] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to

[0191]

[0192] where A is a lookup table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0193] It has been found that such a mechanism for updating state variable values can also be highly advantageous in some scenarios. In particular, it is not necessary to use such a method for negating floating point values, which can be computationally inefficient in some implementations. Thus, the inventive concept can lead to excellent resource efficiency in some situations.

[0194] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to

[0195]

[0196] where A is a lookup table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0197] It has been found that this concept also leads to particularly high computational efficiency and good accuracy in some implementation environments.

[0198] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values ​​according to the following formula

[0199]

[0200] Where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighted values; where is one or more weighted values.

[0201] It has been found that in some cases this concept also offers advantages in computational efficiency and reliability.

[0202] In a preferred embodiment of the arithmetic coder, the entries of A decrease monotonically as the lookup table index increases.

[0203] Using such an approach, it can be achieved that the approximation of the state variable values ​​toward the maximum or minimum values ​​is monotonic and / or continuous and / or asymptotic. For example, it can be achieved that state variables that are far from the respective maximum or minimum values ​​change relatively quickly toward the maximum or minimum value, while state variable values ​​that are closer to the respective maximum or minimum value change relatively slowly toward the maximum or minimum value. Thus, the above-described selection of entries for the lookup table allows for a smooth approximation of the maximum or minimum values, which has been found to be very helpful for deriving interval size information based on one or more state variable values.

[0204] In a preferred embodiment of the arithmetic encoder, A is Or just deviate from the formula by setting zero or reducing the magnitude of one or more extreme values ​​of its independent variables to avoid the updated out of the predetermined value range, (for example, considering With greater than The range of ; that is, Quasi-quantized on; for The extreme value of may be modified by the unmodified A according to the above formula and out of its value range; to avoid this situation, the entries corresponding to these extreme values ​​can be reduced or set to zero), where offset, and is a predetermined parameter (examples are explained above).

[0205] It has been found that such a selection of the look-up table A leads to particularly advantageous behavior of the state variable value that is updated using said look-up table A.

[0206] In a preferred embodiment of the arithmetic encoder, the last entry of the look-up table (when the first state variable value reaches a predetermined value range extending to a maximum allowable value or when the first state variable value exceeds a predetermined threshold value) is equal to zero.

[0207] By using the last entry of the look-up table that is equal to zero, it can be easily avoided that the state variable value exceeds a maximum value and / or a minimum value.

[0208] In a preferred embodiment, the arithmetic encoder is configured to apply a clipping operation to the updated state variable value so as to keep the updated and clipped state variable value within a predetermined value range.

[0209] Using such a mechanism, it can be easily prevented that the state variable value exceeds a predetermined range between a minimum value and a maximum value. Thus, it can be ensured that the state variable value takes "reasonable" values.

[0210] In a preferred embodiment, the arithmetic encoder is configured to apply a clipping operation to the updated state variable value according to

[0211]

[0212] wherein is a maximum allowable value for and wherein is a minimum allowable value for .

[0213] It has been found that such a clipping operation can be implemented in an efficient manner and avoids invalid state variable values.

[0214] In a preferred embodiment, the arithmetic encoder is configured to apply different scaling values for different context models (e.g. so that at least one of the scaling values between two different context models is different).

[0215] Using different scaling values for different context models, different statistical properties of different context models (which can be associated with different types of information and / or different types of bitstream syntax elements) can be taken into account. By using different scaling values for different context models, the update procedure for the state variable value can easily be adapted to different context models without fundamentally changing the underlying algorithm. Thus, appropriate scaling values can be obtained in a very efficient manner.

[0216] In a preferred embodiment, the arithmetic encoder is configured to obtain interval size information as defined in one of the above embodiments.

[0217] It has been found that the concept for updating the state variable values can be well used in combination with the above-described concept for deriving interval size information.

[0218] An arithmetic encoder for encoding a plurality of symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to derive interval size values (R i k ) for arithmetic encoding of one or more symbol values to be encoded (e.g., associated with a given context model, indicated by index k) based on one or more state variable values (s LPS ) representing statistics of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., having different adaptation time constants), wherein the arithmetic encoder is configured to determine the interval size values (R LPS ) using a base look-up table (Base TabLPS) (the size of the base look-up table is smaller than the number of possible probability indices i in terms of probability indices), wherein the arithmetic encoder is configured to determine the interval size values (R LPS ) such that, if a probability index (i) obtained based on the one or more state variable values (e.g., as i = Qp(p LPS )) is in a first range (e.g., smaller than μ), the determined interval size value is identical to or is a rounded version of an element of the base look-up table, and such that, if the probability index is in a second range (e.g., greater than or equal to μ), the determined interval size value is obtained using a scaling and rounding of an element of the base look-up table; and wherein the arithmetic encoder is configured to perform arithmetic encoding of the one or more symbols using the interval size values (R LPS ).

[0219] This embodiment according to the present invention is based on the idea that the determination of the interval size values in the arithmetic encoder can be performed using a "base look-up table" by reusing elements of said base look-up table (once without scaling and once with scaling) the size of which is smaller than the number of different interval size values associated with a given current encoding interval. Thus, the interval size values associated with different ranges of state variable values for arithmetic encoding (encoding / decoding) can substantially differ by scaling (e.g., in addition to some rounding effects). Thus, a relatively small "base look-up table" can be used, the entries of which are used multiple times for different probability indices (wherein the probability indices can be derived based on the respective state variable values).

[0220] In summary, the concepts described herein allow for an efficient determination of interval size values based on one or more state variable values.

[0221] In a preferred embodiment, the arithmetic encoder is configured to determine the interval size value such that, if the probability index is in the second range, the determined interval size value (R LPS ) is a right-shifted version of an element of the base look-up table.

[0222] The concept is based on the idea that a right-shift operation is computationally very efficient and provides reliable interval size values if the probability index is in the second range (while preferably no shift operation is applied to the element of the base look-up table if the probability index is in the first range). Thus, the interval size values provided for "corresponding" probability indices in the first range and in the second range mainly differ by a bit shift (apart from possible rounding). This is generally true for a range of probability index values or even for the complete "first range" (which typically comprises more than two different values). Further, it is noted that a right-shift operation generally corresponds to a division by a power of 2.

[0223] In a preferred embodiment, the probability index (Qp2(p LPS )) determines whether an element of the look-up table is provided as the interval size value (R LPS ) or whether the element of the look-up table is scaled and rounded to obtain the interval size value (R LPS ).

[0224] Since the probability index (or more specifically the question whether the probability index is in the first range or in the second range) decides whether scaling (and optionally rounding) is applied to obtain the interval size value based on an element of the look-up table (base look-up table), the algorithm can remain very simple. For example, the check whether the probability index is in the first range or in the second range can be easily performed by dividing the probability index by a predetermined value or by comparing the probability index to one or more thresholds. Thus, it can be easily decided based on the probability index whether scaling (and optionally rounding) should be performed. Thus, the concept for deriving the interval size value is very efficient.

[0225] In a preferred embodiment of the arithmetic encoder, the division residue (i % μ) of a division between the probability index (i) and a first size value (e.g. μ; wherein the size value e.g. describes an extension of the base look-up table in a first direction) and an interval size index (which can e.g. be obtained based on interval size information or total interval size information R, e.g. using a quantization operation Qr2(.)) determines which element of the base look-up table is used for obtaining the interval size value.

[0226] By selecting an entry of the base lookup table depending on the division residue and also depending on the interval size index, a two-dimensional base lookup table can be evaluated easily, wherein an element of the two-dimensional base lookup table can contain a multiplication with the interval size value (which can be represented by the interval size index). Thus, a multiplication with the interval size value can be saved by having a two-dimensional base lookup table (wherein the division residue can be used as a first table index and wherein the interval size index can act as a second table index). Moreover, using the division residue as a first table index is well adapted to the fact that elements of the base lookup table are selected cyclically with increasing probability index (as subsequent ranges of the probability index select a common range of the base lookup table). In summary, the above described implementation allows a very simple access to elements of the base lookup table and helps to avoid a multiplication with the interval size value due to the two-dimensional nature of the base lookup table.

[0227] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to XPS ( e.g. R LPS ) :

[0228]

[0229] wherein BaseTabLPS is a base lookup table of size μ x λ; wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information (e.g. total interval size information R); wherein % is a division residue operation; wherein / is a division operation; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant greater or equal to 2 and wherein b is preferably a constant greater or equal to 1 and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and how many bits of x are right shifted).

[0230] It has been found that such a concept for determining an interval size value constituting interval size information is highly computationally efficient and allows to use a relatively small base lookup table. In particular, multiplication operations can be avoided. Moreover, the division residue operation and the division operation can also be implemented in a computationally very efficient manner, e.g. with a potency of 2 for the size μ. Thus, the described concept for deriving an interval size value allows a very computationally efficient implementation.

[0231] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R based on one or more state variable values (s i kto derive an interval size value (R LPS ) for the arithmetic encoding of one or more symbol values to be encoded, the one or more state variable values representing statistics of a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1), e.g., with different adaptation time constants; wherein the arithmetic encoder is configured to determine the interval size value (R LPS ) using a probability table (Prob_TabLPS) based on a (current) probability value derived from the one or more state variable values and based on the (current) encoding interval size (R LPS ), the probability table describing interval sizes (interval size values) for a set of a plurality of probability values (e.g., for probability indices between 0 and μ-1) and for a (single) given (reference) encoding interval size, and wherein the arithmetic encoder is configured to scale an element of the probability table (Prob_TabLPS) (e.g., selected depending on the current probability value) to obtain the interval size value (R LPS ) in case the current probability value is not in the set of a plurality of probability values (e.g., the probability index associated with the current probability value is larger than or equal to μ) and / or in case the current encoding interval size (R

[0232] The concept is based on the idea that interval size values associated with different (non-overlapping) ranges of probability values (or, probability indices) are essentially related by a scaling operation (apart from possible rounding effects). It should also be noted that the scaling operation can be implemented, e.g., in a computationally efficient way (e.g., using bit shift operations) if the size of the lookup table (probability table) is chosen appropriately. Thus, the interval size values for the arithmetic encoding (encoding or decoding) can be derived with a small computational effort and also using only a small size memory saving lookup table.

[0233] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the (current) encoding interval size (R) and a second scaling of a result of the first scaling depending on whether the element associated with the current probability value (indicated by index i) is included in the set of a plurality of probability values (e.g., depending on whether the current probability value lies within the range of probability values covered by the probability table).

[0234] By using a two-step multiplication or scaling, in order to obtain the interval size information, the use of a small probability table is allowed. For example, the probability table can only "directly" cover a given, relatively small range of single coding interval sizes and probability values (which can be represented by "the set of multiple probability values"). Thus, for any other coding interval size and for any probability value not included in the set of multiple probability values "directly" covered by the probability table, scaling is performed so that a meaningful and reliable interval size value is obtained.

[0235] In a preferred embodiment of the arithmetic encoder, the division remainder (i % μ) of the division between the probability index (e.g., i; e.g., representing the current probability value) and the first size value (e.g., μ; wherein the size value e.g. describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the second scaling. determining a scaling factor used in the second scaling and / or wherein the coding interval size (R) determines the multiplication scaling factor (Qr2(R)) of the first scaling.

[0236] Using the division remainder to determine which element of the probability is scaled facilitates the fact that entries of the probability table are reused (e.g., in a cyclic manner) as the probability index increases. The division remainder represents this fact. Moreover, the division remainder can in some cases be calculated with a very high computational efficiency, especially in case of division by a potency of 2.

[0237] Furthermore, by determining the scaling factor based on the integer division result allows to easily assign different (adjacent) ranges of probability index values to different scaling factors. Moreover, the integer division result can in some cases be calculated in a computationally efficient manner, especially in case of division by a potency of 2.

[0238] Moreover, determining the multiplication scaling factor depending on the coding interval size reflects the fact that the interval size value is scaled with the coding interval size. Thus, the interval size value can be obtained with a high efficiency and a high accuracy.

[0239] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to the following formula XPS (e.g., R LPS ):

[0240]

[0241] where i is a table index associated with the probability information; where j is a table index associated with the interval size information; where % is a division remainder operation; where / is a division operation; where probTabLPS[] is the probability table; where μ is the number of elements of the probability table (where the value of i typically is larger than μ); where R is the interval size (e.g. the current coding interval size); where Qr2(R) is a scaling factor depending on R; where Scal(x, y) is a scaling function (e.g. defined as where is a down-rounding operation, where a preferably is a constant larger than or equal to 2, and where b preferably is a constant larger than or equal to 1, and where the scaling function preferably is implemented using a right bit shift operation, where y determines whether and how many bits of x are right-shifted.

[0242] Such an algorithm for determining the interval size value has been found to be computationally efficient and to provide good quality results. The probability table can be relatively small, and the scaling function can be implemented in a computationally efficient manner, e.g. using one or more bit shift operations.

[0243] In a preferred embodiment, the arithmetic coder is configured to obtain the interval size information using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on whether the element associated with the current probability value (indicated by index i) is included in the probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table) and using a second scaling of the result of the first scaling depending on the coding interval size (R).

[0244] In this concept, the order of the first and second scaling is reversed when compared to the above concept. However, the basic considerations remain the same.

[0245] In a preferred embodiment, the division remainder of the division between the probability index (e.g. i; e.g. representing the current probability value) and the first size value (e.g. μ; where the size value e.g. describes the extension of the probability table) (i%μ) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. The scaling factor used in the first scaling (e.g. or ) is determined; and / or where the (current) coding interval size (R) determines the multiplicative scaling factor of the second scaling (Qr2(R)).

[0246] In this concept, the order of the first and second scaling is reversed when compared to the above concept. However, the basic considerations remain the same.

[0247] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to the following formula XPS ( e.g. R LPS ) :

[0248]

[0249] wherein i is a table index associated with probability information; wherein j is a table index associated with (current) interval size information; wherein % is a division remainder operation; wherein / is a division operation (e.g. providing an integer result); wherein probTabLPS[ ] is the probability table; wherein μ is a number of elements in the probability table (wherein the range of values of i is typically larger than μ); wherein R is the interval size (e.g. the current encoding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0250] In this concept, the scaling order of the first scaling and the second scaling is reversed when compared to the above implementation. However, the basic underlying idea remains the same.

[0251] In the following, a number of embodiments related to arithmetic decoding will be described. However, the ideas, considerations and details behind these ideas related to arithmetic decoding are essentially the same as the ideas, considerations and details behind the concepts for arithmetic encoding. Hence, the above explanations apply in a similar way as well. However, the symbol values to be encoded correspond to the symbol values to be decoded or previously decoded symbols, and the previously encoded symbol values correspond to the previously decoded symbol values. Moreover, the correspondence between the encoding features and the decoding features will be apparent to the skilled person and apparent from a comparison of the claim wording.

[0252] An embodiment according to the present application creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g. binary values), wherein the arithmetic decoder is configured to derive an interval size value (R i k ) for the arithmetic decoding of one or more symbol values to be decoded based on one or more state variable values (s LPS), the one or more state variable values representing statistics of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., with different adaptation time constants), wherein the arithmetic decoder is configured to determine the range size value (R LPS ) using a base look-up table (Base TabLPS) (the size of the base look-up table being smaller than the number of possible probability indices i in terms of probability indices), wherein the arithmetic decoder is configured to determine the range size value (R LPS ) such that, if the probability index (i) obtained based on the one or more state variable values (e.g., as i = Qp(p LPS )) is in a first range (e.g., smaller than μ), the determined range size value is identical to or is a rounded version of an element of the base look-up table, and such that, if the probability index is in a second range (e.g., larger than or equal to μ), the determined range size value is obtained using a scaling and rounding of an element of the base look-up table; and wherein the arithmetic decoder is configured to perform the arithmetic decoding of the one or more symbols using the range size value (R LPS ).

[0253] In a preferred embodiment, the arithmetic decoder is configured to determine the range size value such that, if the probability index is in the second range, the determined range size value (R LPS ) is a right-shifted version of an element of the base look-up table.

[0254] In a preferred embodiment of the arithmetic decoder, the probability index (Qp2(p LPS ) determines whether an element of the look-up table is provided as the range size value (R LPS ) or whether an element of the look-up table is scaled and rounded to obtain the range size value (R LPS ).

[0255] In a preferred embodiment of the arithmetic decoder, a division residue (i % μ) of a division between the probability index (i) and a first size value (e.g., μ; wherein the size value describes, for example, an extension of the base look-up table in a first direction) and a range size index (e.g., obtainable based on range size information or total range size information R, e.g., using a quantization operation Qr2(.)) determine which element of the base look-up table is used to obtain the range size value.

[0256] In a preferred embodiment, the arithmetic decoder is configured to obtain the range size value R XPS (e.g., R LPS ) according to

[0257]

[0258] wherein BaseTabLPS is a base lookup table of size μ x λ; wherein i is a table index associated with a probability information; wherein j is a table index associated with an interval size information (e.g., a total interval size information R); wherein % is a division remainder operation; wherein / is a division operation; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant greater than or equal to 2, and wherein b is preferably a constant greater than or equal to 1, and wherein the scaling function is preferably implemented using a right bit shift operation, wherein y determines whether and by how many bits x is right-shifted.

[0259] An arithmetic decoder for decoding a plurality of symbols having a symbol value (e.g., a binary value) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to derive an interval size value (R i k ) for an arithmetic decoding of one or more symbols to be decoded (e.g., associated with a given context mode, indicated by index k) based on one or more state variable values (s LPS ) representing statistics of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1, e.g., having different adaptation time constants), wherein the arithmetic decoder is configured to determine an interval size value (R LPS ) based on a (current) probability value derived from the one or more state variable values and based on a (current) coding interval size (R) using a probability table (Prob_TabLPS) (the size of the probability table in terms of probability indices is smaller than the number of possible probability indices i), wherein the probability table describes a set of a plurality of probability values (e.g., for probability indices between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, and wherein the arithmetic decoder is configured to scale an element of the probability table (Prob_TabLPS) (e.g., selected depending on the current probability value) to obtain the interval size value [R LPS ] in case the current probability value is not in the set of a plurality of probability values (e.g., the probability index associated with the current probability value is greater than or equal to μ) and / or in case the current coding interval size (R) is different from the given coding interval size; and wherein the arithmetic decoder is configured to perform the arithmetic decoding of the one or more symbols using the interval size value (R LPS ).

[0260] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value using a (multiplicative) first scaling of a selected element of a probability table depending on the (current) coding interval size (R) (probTabLPS[i%μ]) and a second scaling of a result of the first scaling depending on whether the element associated with the current probability value (denoted by the index i) is included in the set of multiple probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table).

[0261] In a preferred embodiment of the arithmetic decoder, a division residue (i%μ) of a division between a probability index (e.g. i; e.g. representing the current probability value) and a first size value (e.g. μ; wherein the size value e.g. describes an extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein an integer division result of a division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. determining a scaling factor used in the second scaling and / or wherein the coding interval size (R) determines a multiplicative scaling factor (Qr2(R)) of the first scaling.

[0262] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R according to XPS (e.g. R LPS ):

[0263]

[0264] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is a number of elements of the probability table (wherein the range of values of i is typically larger than μ); wherein R is an interval size (e.g. a current coding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2 and wherein b is preferably a constant larger than or equal to 1 and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and by how many bits x is right-shifted).

[0265] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size information using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i % m]) that depends on whether the element associated with the current probability value (denoted by the index i) is included in the probability values (e.g., depends on whether the current probability value lies within the range of probability values covered by the probability table) and using a second scaling of the result of the first scaling that depends on the coding interval size (R).

[0266] In a preferred embodiment of the arithmetic decoder, the division residue (i % m) of the division between the probability index (e.g., i; e.g., representing the current probability value) and the first size value (e.g., m; wherein the size value e.g. describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determines the number of elements of the probability table that are scaled in the first scaling. determines the scaling factor (e.g., Qr1(i)) used in the first scaling; and / or wherein the (current) coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling. or ) of the first scaling; and / or wherein the (current) coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.

[0267] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R according to XPS (e.g., R LPS ):

[0268]

[0269] wherein i is a table index associated with the probability information; wherein j is a table index associated with the (current) interval size information; wherein % is a division residue operation;

[0270] wherein / is a division operation (e.g., providing an integer result); wherein probTabLPS[] is the probability table; wherein m is the number of elements in the probability table (wherein the range of values of i is typically larger than m); wherein R is the interval size (e.g., the current coding interval size); wherein Qr2(R) is a scaling factor that depends on R; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit-shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0271] In the following, some further embodiments related to arithmetic coding will be discussed.

[0272] An arithmetic encoder for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to determine one state variable value (s k ) representing statistics of a plurality of previously encoded symbol values and wherein the arithmetic encoder is configured to calculate a subinterval width value (R LPS ) for an arithmetic encoding of a symbol value to be encoded from a combined state variable value or a scaled and / or rounded version thereof by using a one-dimensional look-up table (probTabLPS[Qp2(...)]) whose entries comprise probability values of different value intervals of a value range for the combined state variable value or the scaled and / or rounded version thereof mapping the one state variable value (s k ) or the scaled and / or rounded version thereof onto a probability value; and quantizing coding interval size information (e.g. R) describing a size of a coding interval for the arithmetic encoding of the symbol to be encoded onto a quantization level (Qr2(R)) prior to the arithmetic encoding of the symbol; determining a product between the probability value and the quantization level (by a look-up of pre-computed products or by a multiplication), wherein the arithmetic encoder is configured to perform a state variable value update depending on the symbol value to be encoded.

[0273] This embodiment can be used for determining a subinterval width value based on a combined state variable value based on a very simple one-dimensional look-up table. The coding interval size is considered by quantizing the coding interval size information and by determining a product between the probability value and the quantization value (or, quantization level). Thus, reliable results can be obtained with moderate effort.

[0274] In a preferred embodiment, the arithmetic encoder is configured to derive a combined state variable value (e.g. can be a weighted sum of state variable values) as the one state variable value (s i k ) from a plurality of state variable values (s k ) representing statistics of a plurality of previously encoded symbol values (e.g. sequences of binary values) with different adaptation time constants (e.g. in case of a plurality of state variable values, for statistics with different adaptation time constants).

[0275] It has been found that using a combined state variable value as the one state variable value leads to particularly good results. The consideration of different adaptation time constants allows to consider both short-time statistics and long-time statistics, making the subinterval width value particularly reliable.

[0276] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of the state variable values ​​in order to obtain a combined state variable value.

[0277] Such calculation of the combined state variable value allows taking into account the different influences of short-term statistics and long-term statistics on the combined state variable value, while keeping the computational effort relatively small.

[0278] In a preferred embodiment, the arithmetic encoder is configured to determine the rounding value The sum of , in order to obtain the combined state variable value (s k ), the rounded value is obtained by The weighted value associated with ) and rounding the product.

[0279] Applying rounding operations before summing reduces the computational effort and eliminates the effects of very small products of state variable values ​​and associated weight values, thereby increasing reliability.

[0280] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value s according to the following formula k :

[0281]

[0282] Among them, s k 2 is the state variable value, where N is the number of state variable values ​​considered, where is the round-down operator, where d k i is a weighted value associated with the state variable value (e.g., a weighting factor that controls the influence of the individual state variable values ​​on the combined state variable value) (where d k i Preferably, the integer value of von 2 is effective, and wherein two different d k i The ratio between them is preferably an integer value of 2 (efficiency) [where two different d k i The ratio between them is preferably greater than or equal to 8).

[0283] Such a derivation of the combined state variable value has been found to be particularly advantageous. Reference is also made to the above explanation of the corresponding concept for determining the combined state variable value.

[0284] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value according to the following formula

[0285]

[0286] wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values, wherein A is or deviates from this equation for one or more extreme values of its argument only by being set to zero or reduced in magnitude to avoid an updated to deviate from its value range, (e.g. taking into account having a value range larger than ; i.e. is quasi-quantized to ; for extreme values of , the may deviate from its value range according to the above equation modified by the unmodified A; to avoid this, the entries corresponding to these extreme values can be reduced or set to zero); wherein offset, and are predetermined parameters (examples are set out above).

[0287] It has been found that such an update of the state variable values is particularly advantageous. Reference is also made to the above explanations regarding this concept for updating the state variables.

[0288] In a preferred embodiment, the arithmetic encoder is configured to derive the

[0289] Reference is made to the above explanations regarding this concept.

[0290] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the equation

[0291]

[0292] wherein A is a look-up table (e.g. comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0293] Reference is made to the above explanations regarding the advantages of this concept for updating one or more state variable values.

[0294] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the equation

[0295]

[0296] Where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighted values; where is one or more weighted values.

[0297] With regard to the advantages of this concept for updating the value of one or more state variables, reference is made to the above explanations.

[0298] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values ​​according to the following formula

[0299]

[0300] Where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighted values; where is one or more weighted values.

[0301] With regard to the advantages of this concept for updating the value of one or more state variables, reference is made to the above explanations.

[0302] In a preferred embodiment, the arithmetic encoder is configured to perform quantization of the encoding interval size information by applying a logical right shift to the encoding interval size information.

[0303] Logical right shifts that encode interval size information are computationally efficient.

[0304] In a preferred embodiment, the arithmetic encoder is configured to To perform quantization of the encoding interval size information R, where u, v and w are parameters.

[0305] With regard to the advantages of this quantization of the encoding interval size information, reference is made to the above discussion.

[0306] In a preferred embodiment of the arithmetic coder, the entries of the one-dimensional lookup table are associated with a state variable value or a scaled and / or rounded version thereof. increases and decreases monotonically.

[0307] With regard to the advantages of this structure of a one-dimensional lookup table, reference is made to the discussion above.

[0308] In a preferred embodiment of the arithmetic encoder, wherein for a state variable value or a scaled and / or rounded version thereof The different value intervals of the value range of are equal in size.

[0309] With regard to the advantages of this concept, reference is made to the above discussion.

[0310] In a preferred embodiment of the arithmetic coder, the entries of the one-dimensional lookup table are associated with a state variable value or a scaled and / or rounded version thereof. It decreases monotonically at a decreasing rate as the value of

[0311] With regard to the advantages of this concept, reference is made to the above discussion.

[0312] In the following, the concept of arithmetic decoding will be described, which corresponds to the concept of arithmetic coding described above. Therefore, the same explanation also applies, and the same details described above are optionally used. However, it should be noted that the arithmetic encoder corresponds to the arithmetic decoder. In addition, the symbol value previously encoded generally corresponds to the symbol value previously decoded, and the symbol value to be encoded can generally correspond to the symbol value previously decoded (or, corresponding to the symbol value to be decoded). However, with respect to the correspondence of features, reference is also made to the comparison of the corresponding claims defining the relevant (or, corresponding) concepts.

[0313] According to an embodiment of the present invention, an arithmetic decoder for decoding a plurality of symbols having symbol values ​​(e.g., binary values) is created. According to an embodiment of the present invention, an arithmetic decoder for decoding a plurality of symbols having symbol values ​​(e.g., binary values) is created, wherein the arithmetic decoder is configured to decode a plurality of symbols having symbol values ​​(e.g., binary values) based on a plurality of state variable values ​​(s i k ) (e.g., associated with a given context model, indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values ​​to be decoded k , R*p k ), the plurality of state variable values ​​representing statistics (e.g., estimates of probabilities that one or more symbols to be decoded include certain symbol values) of a plurality of previously decoded symbol values ​​(e.g., sequences of binary values ​​0 and 1) having different adaptation time constants, wherein the arithmetic decoder is configured to map the first state variable value (s) using a lookup table (LUT1) k 1) or its scaled and / or rounded versions And use the lookup table (LUT1) to map the second state variable value (s k 2) or its scaled and / or rounded version In order to obtain said bin size information (eg p) describing a bin size for arithmetic decoding of one or more symbols to be decoded k or R*p k ).

[0314] In a preferred embodiment, the arithmetic decoder is configured to convert the first state variable value or a scaled and / or rounded version thereof into Mapped to the first probability value (p k1), and wherein the arithmetic decoder is configured to use a lookup table to convert the second state variable value or a scaled and / or rounded version thereof to Mapped to the second probability value (p k 2 ) and wherein the arithmetic decoder is configured to use the first probability value and the second probability value to obtain a combined probability value (pk) (e.g., using a weighted sum or using a weighted average).

[0315] In a preferred embodiment, the arithmetic decoder is configured to change the value of the state variable in a first direction (e.g., become more positive) if the decoded symbol takes a first value (e.g., "1"), and to change the value of the state variable in a second direction (e.g., become more negative) if the decoded symbol takes a second value (e.g., "0") different from the first value (e.g., so that the state variable value can take both positive and negative values), wherein the arithmetic decoder is configured to change the value of the state variable in a first direction (e.g., become more positive) if the decoded symbol takes a second value (e.g., "0") different from the first value (e.g., so that the state variable value can take both positive and negative values), wherein the arithmetic decoder is configured to change the value of the state variable in a second direction (e.g., become more negative) depending on the absolute value of the respective state variable values ​​(if s k i >0, then s k i , otherwise -s k i ) (e.g., depending on a scaled and rounded version of the absolute value of the state variable value) to determine the entry of the lookup table to be evaluated.

[0316] In a preferred embodiment, the arithmetic decoder is configured to convert the first probability value (p k 1) Set to the value provided by the lookup table (for example, ), and wherein the arithmetic decoder is configured to convert the first probability value (p k 1) is set to a value obtained by subtracting a value provided by a lookup table from a predetermined value (e.g., 1) (e.g., ).

[0317] In a preferred embodiment, the arithmetic decoder is configured to determine two or more probability values ​​p according to the following formula k i :

[0318]

[0319] Where LUT1 is a lookup table containing probability values; is the round-down operator; where s k i is the value of the i-th state variable; and where a k iis a weighting value associated with the i-th state variable value (e.g., a weighting value that makes the numerical range of the i-th state variable value applicable to the number of entries of the lookup table).

[0320] In a preferred embodiment, the arithmetic decoder is configured to determine the two or more probability values p k i :

[0321]

[0322] wherein LUT1 is a lookup table containing probability values; wherein is a down-rounding operator; wherein s k i is the i-th state variable value; and wherein a k i is a weighting value associated with the i-th state variable value (e.g., a weighting value that makes the numerical range of the i-th state variable value applicable to the number of entries of the lookup table).

[0323] In a preferred embodiment, the arithmetic decoder is configured to determine the two or more probability values p k i obtain a combined probability value p k :

[0324]

[0325] wherein N is the number of probability values under consideration (and can equal the number of state variable values under consideration); and wherein b k i is a weighting value (e.g., a weighting factor that controls the influence of individual state variable values on the combined probability value) [wherein b k i is preferably an integer value power of 2, and wherein the ratio between two different b k i is preferably an integer value power of 2).

[0326] In a preferred embodiment, the arithmetic decoder is configured to map the first state variable value or a scaled and / or rounded version thereof to a first interval width value (R*p k 1) using a two-dimensional lookup table whose entries are addressed depending on the first state variable value and depending on encoding interval size information (e.g., R) that describes the size of the encoding interval of the arithmetic decoding prior to the decoding of the sign.

[0327] wherein the arithmetic decoder is configured to map the second state variable value or a scaled and / or rounded version thereof mapped onto the second interval width value (R k 2 ) depending on the second state variable value and depending on the coding interval size information (e.g. R) describing the size of the coding interval of the arithmetic decoder prior to the decoding of the symbol. Wherein the arithmetic decoder is configured to obtain a combined sub-interval width value (e.g. using a weighted sum or using a weighted average) using the first sub-interval width value and the second sub-interval width value.

[0328] In a preferred embodiment of the arithmetic decoder, the two-dimensional look-up table can be represented as a binary product between a first one-dimensional vector (forming a one-dimensional look-up table) and a second one-dimensional vector (Qr2(R)), the entries of the first one-dimensional vector comprising the first state variable value and the second state variable value or scaled and / or rounded versions thereof the different value intervals of the value range of the first state variable value and the second state variable value; the entries of the second one-dimensional vector comprising the quantization levels for the coding interval size information.

[0329] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined based on a base look-up table (Base TabLPS), wherein a first group of elements (or, block; e.g. "upper half") of the two-dimensional look-up table are identical to or are rounded versions of the elements of the base look-up table, and wherein a second group of elements (or, block; e.g. "lower half") of the two-dimensional look-up table are scaled and rounded versions of the elements of the base look-up table.

[0330] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional look-up table are right-shifted versions of the elements of the base look-up table.

[0331] In a preferred embodiment of the arithmetic decoder, the probability index (Qp2(P LPS ) or i) determines whether an element of the first group of elements of the two-dimensional look-up table is evaluated or an element of the second group of elements of the two-dimensional look-up table is evaluated, wherein a first range (e.g. between 0 and μ-1) of the probability index (e.g. obtained by quantizing the probability value (e.g. p LPS ) is associated with the elements of the first group of elements, and wherein a second range (e.g. greater than or equal to μ) of the probability index (e.g. obtained by quantizing the probability value (e.g. p LPS ) e.g. using a quantization function Qp2(.)) is associated with the elements of the second group of elements.

[0332] In a preferred embodiment of the arithmetic decoder, a division residue (i % μ) of a division between a probability index (i) and a first size value (e.g., μ; wherein the size value e.g. describes an extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on interval size information R; e.g., using a quantization operation Qr2(.) (e.g., j)) determine which element of the base lookup table is used to obtain an element of the two-dimensional lookup table.

[0333] In a preferred embodiment, the arithmetic decoder is configured to obtain an element of the two-dimensional lookup table (RangTabLPS) according to

[0334]

[0335] wherein BaseTabLPS is a base lookup table of size μ x λ; wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information (e.g., describing a current coding interval size); wherein % is a division residue operation; wherein / is a division operation; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant greater or equal to 2, and wherein b is preferably a constant greater or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0336] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional lookup table (RangTabLPS) is defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., indicated by index i) and an interval size for a given (reference) coding interval size, and wherein a scaling is used to derive an element of the two-dimensional lookup table for a probability value not in the set of multiple probability values and / or for a coding interval size different from the given coding interval size from the probability table.

[0337] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional lookup table is obtained using a (multiplicative) first scaling of a selected element of a probability table (probTabLPS[i % μ]) depending on a coding interval size (R) and a second scaling of a result of the first scaling depending on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value lies within a range of probability values covered by the probability table).

[0338] In a preferred embodiment of the arithmetic decoder, a division residue (i % μ) of a division between a probability index (e.g. i; e.g. denoting a current probability value) and a first size value (e.g. μ; wherein the size value e.g. describes an extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein an integer division result of a division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. determining a scaling factor used in the second scaling and / or wherein the coding interval size determines a multiplication scaling factor (Qr2(R)) of the first scaling.

[0339] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to:

[0340]

[0341] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the value of I is typically larger than μ); wherein R is the interval size (or, the current coding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0342] In a preferred embodiment of the arithmetic decoder, an element of a two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether the element associated with the current probability value (denoted by index i) is included in the set of probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table) and using a second scaling of the result of the first scaling depending on the coding interval size (R).

[0343] In a preferred embodiment of the arithmetic decoder, a division residue (i % μ) of a division between a probability index (e.g. i; e.g. denoting a current probability value) and a first size value (e.g. μ; wherein the size value e.g. describes an extension of the probability table) determining which element of the probability table to scale in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determining a scaling factor to use in the first scaling and / or wherein the coding interval size (R) determines a multiplication scaling factor (Qr2(R)) of the second scaling.

[0344] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to:

[0345]

[0346] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation (e.g. providing an integer result); wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the value of I is typically larger than μ); wherein R is the interval size; wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0347] In a preferred embodiment, the arithmetic decoder is configured to calculate a first sub-interval width value and a second sub-interval width value (R*p k ) from a first state variable value and a second state variable value or scaled and / or rounded versions thereof respectively, by using a one-dimensional look-up table (LUT4) whose entries comprise probability values for different value intervals of a value range for the first state variable value and the second state variable value or scaled and / or rounded versions thereof k ) or scaled and / or rounded versions thereof ​mapping onto the first and second probability values and quantizing the range size information (e.g., R) describing the size of the coding interval of the arithmetic coding preceding the encoding of the symbol into quantization levels; determining a product between, on the one hand, the first and second probability values and, on the other hand, the quantization levels (by looking up pre-computed products or by multiplication); and using the first and second sub-interval width values to obtain a combined sub-interval width value (e.g., using a weighted sum or using a weighted average).

[0348] In a preferred embodiment, the arithmetic decoder is configured to perform the quantizing of the range size information by applying a logical right shift to the range size information.

[0349] In a preferred embodiment, the arithmetic decoder is configured to perform the quantizing of the range size information R by where u, v and w are parameters.

[0350] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of the first and second state variable values or of the scaled and / or rounded versions thereof .

[0351] In a preferred embodiment of the arithmetic decoder, the different value intervals of the value range for the first and second state variable values or for the scaled and / or rounded versions thereof are equal in size.

[0352] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of the first and second state variable values or of the scaled and / or rounded versions thereof at a decreasing rate.

[0353] An embodiment according to the present application creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), wherein the arithmetic decoder is configured to derive, based on a plurality of state variable values (s i k ) (the plurality of state variable values being associated with a given context model, indicated by an index k, for example) representing statistics (e.g., an estimate of the probability of certain symbol values) of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1) having different adaptation time constants, interval size information (p k , R*p k ) for an arithmetic decoding of one or more symbols to be decoded, and to derive, based on the plurality (each) of state variable values (s k ), a combined state variable value (sk ) (which combination variable value may, for example, be a weighted sum of the state variable values), and wherein the arithmetic decoder is configured to use a look-up table to map the combination state variable value (s k ) or a scaled and / or rounded version thereof in order to obtain said interval size information (e.g., p k or R*p k ).

[0354] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of the state variable values in order to obtain the combination state variable value.

[0355] In a preferred embodiment, the arithmetic decoder is configured to determine a sum of rounded values in order to obtain the combination state variable value (s k ), the rounded values being obtained by rounding the products of the state variable values and associated weighting values .

[0356] In a preferred embodiment, the arithmetic decoder is configured to determine the combination state variable value s k according to:

[0357]

[0358] wherein s k 2is a state variable value, wherein N is the number of state variable values under consideration, wherein is a down-rounding operator, wherein d k i is a weighting value associated with a state variable value (e.g., a weighting factor controlling the influence of the respective state variable value on the combination state variable value) (wherein d k i is preferably an integer-valued power of 2, and wherein the ratio between two different d k i is preferably an integer-valued power of 2) [wherein the ratio between two different d k i is preferably larger than or equal to 8].

[0359] In a preferred embodiment, the arithmetic decoder is configured to change the state variable value in a first direction (e.g. to become more positive) if the decoded symbol takes a first value (e.g. “1”), and to change the state variable value in a second direction (e.g. to become more negative) if the decoded symbol takes a second value different from the first value (e.g. “0”) (e.g. such that the state variable value can take positive and negative values), and wherein the arithmetic decoder is configured to determine the entry of the look-up table to be evaluated in dependence on a scaled and rounded version of the absolute value of the combined state variable value (e.g. if s k i > 0, then s k , else -s k .

[0360] In a preferred embodiment, the arithmetic decoder is configured to set the probability value (p k ) to a value provided by the look-up table (e.g. to ) if the combined state variable value takes a first sign (e.g. positive sign), and wherein the arithmetic decoder is configured to set the probability value (p k ) to a value obtained by subtracting the value provided by the look-up table from a predetermined value (e.g. 1) (e.g. to

[0361] In a preferred embodiment, the arithmetic decoder is configured to determine the combined probability value p k according to:

[0362]

[0363] wherein LUT2 is a look-up table containing probability values; wherein is a down-rounding operator; wherein s k is the combined variable value; and wherein a k is a weighting value associated with the combined state variable value (e.g. a weighting value that adapts the numerical range of the i-th state variable value to the number of entries of the look-up table).

[0364] In a preferred embodiment, the arithmetic decoder is configured to determine the combined probability value p k according to:

[0365]

[0366] wherein LUT2 is a look-up table containing probability values; wherein is a down-rounding operator; wherein s k is the combined variable value; and wherein a kis a weighted value associated with the combined state variable value (e.g., a weighted value that scales the numerical range of the i-th state variable value to the number of entries of the lookup table).

[0367] In a preferred embodiment, the arithmetic decoder is configured to map the combined state variable value or a scaled and / or rounded version thereof to a sub-interval width value (R*p k ) using a two-dimensional lookup table whose entries are addressed depending on the combined state variable value and depending on the coding interval size information (e.g., R) describing the size of the coding interval in which the arithmetic decoding precedes the decoding of the symbol.

[0368] In a preferred embodiment of the arithmetic decoder, the two-dimensional lookup table can be represented as a dyadic product between a first one-dimensional vector (LUT4 [...]; forming a one-dimensional lookup table) whose entries comprise probability values for different value intervals of the value range of the combined state variable value or a scaled and / or rounded version thereof and a second one-dimensional vector (Qr2(R)) whose entries comprise quantization levels for the coding interval size information.

[0369] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (Base TabLPS), wherein a first group of elements (or, block; e.g., “upper half”) of the two-dimensional lookup table are identical to or are rounded versions of the elements of the base lookup table, and wherein a second group of elements (or, block; e.g., “lower half”) of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.

[0370] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional lookup table are right-shifted versions of the elements of the base lookup table.

[0371] In a preferred embodiment of the arithmetic decoder, the probability index (Qp2(p LPS ) or i) determines whether an element of the first group of elements of the two-dimensional lookup table is evaluated or an element of the second group of elements of the two-dimensional lookup table is evaluated, wherein a first range (e.g., between 0 and μ-1) of the probability index (e.g., obtained by quantizing the probability value (e.g., p LPS ) is associated with the elements of the first group of elements, and wherein a second range (e.g., greater than or equal to μ) of the probability index (e.g., obtained by quantizing the probability value (e.g., p LPS , e.g., using the quantization function Qp2(.)) is associated with the elements of the second group of elements.

[0372] In a preferred embodiment of the arithmetic decoder, a division residue (i % μ) of a division between a probability index (i) and a first size value (e.g., μ; wherein the size value e.g. describes an extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on interval size information R; e.g., using a quantization operation Qr2(.) (e.g., j)) determine which element of the base lookup table is used to obtain an element of the two-dimensional lookup table.

[0373] In a preferred embodiment, the arithmetic decoder is configured to obtain an element of the two-dimensional lookup table (RangTabLPS) according to

[0374]

[0375] wherein BaseTabLPS is a base lookup table of size μ x λ; wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information (e.g., describing a current coding interval size); wherein % is a division residue operation; wherein / is a division operation; wherein Scal(x, y) is a scaling function (e.g., defined as wherein is a down-rounding operation, wherein a is preferably a constant greater or equal to 2, and wherein b is preferably a constant greater or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0376] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional lookup table (RangTabLPS) is defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., indicated by index i) and an interval size for a given (reference) coding interval size, and wherein a scaling is used to derive an element of the two-dimensional lookup table for a probability value not in the set of multiple probability values and / or for a coding interval size different from the given coding interval size from the probability table.

[0377] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional lookup table is obtained using a (multiplicative) first scaling of a selected element of a probability table (probTabLPS[i % μ]) depending on a coding interval size (R) and a second scaling of a result of the first scaling depending on whether an element associated with a current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value lies within a range of probability values covered by the probability table).

[0378] In a preferred embodiment of the arithmetic decoder, the division residue (i % μ) of the division between the probability index (e.g. i; e.g. denoting the current probability value) and the first size value (e.g. μ; wherein the size value e.g. describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. determining a scaling factor used in the second scaling and / or wherein the coding interval size determines a multiplication scaling factor (Qr2(R)) of the first scaling.

[0379] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to

[0380]

[0381] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation; wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the value of I is typically larger than μ); wherein R is the interval size (or, the current coding interval size); wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0382] In a preferred embodiment of the arithmetic decoder, an element of a two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether the element associated with the current probability value (denoted by index i) is included in the set of probability values (e.g. depending on whether the current probability value lies within the range of probability values covered by the probability table) and using a second scaling of the result of the first scaling depending on the coding interval size (R).

[0383] In a preferred embodiment of the arithmetic decoder, the division residue (i % μ) of the division between the probability index (e.g. i; e.g. denoting the current probability value) and the first size value (e.g. μ; wherein the size value e.g. describes the extension of the probability table) determines which element of the probability table is scaled in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determines which element of the probability table is scaled in the first scaling. determining which element of the probability table to scale in the first scaling; and / or wherein the integer division result of the division between the probability index (i) and the first size value determining a scaling factor to use in the first scaling and / or wherein the coding interval size (R) determines a multiplication scaling factor (Qr2(R)) of the second scaling.

[0384] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to

[0385]

[0386] wherein i is a table index associated with probability information; wherein j is a table index associated with interval size information; wherein % is a division residue operation; wherein / is a division operation (e.g. providing an integer result); wherein probTabLPS[] is the probability table; wherein μ is the number of elements of the probability table (wherein the value of I is typically larger than μ); wherein R is the interval size; wherein Qr2(R) is a scaling factor depending on R; wherein Scal(x, y) is a scaling function (e.g. defined as wherein is a down-rounding operation, wherein a is preferably a constant larger than or equal to 2, and wherein b is preferably a constant larger than or equal to 1, and wherein the scaling function is preferably implemented using a right-shift bit-shift operation, wherein y determines whether and how many bits of x are right-shifted).

[0387] In a preferred embodiment, the arithmetic decoder is configured to compute a sub-interval width value (R * p k ) from a combined variable value or a scaled and / or rounded version thereof by using a one-dimensional look-up table (LUT4) whose entries comprise probability values for different value intervals of a value range for the combined state variable value or a scaled and / or rounded version thereof mapping the combined state variable value (s k ) or a scaled and / or rounded version thereof quantizing coding interval size information (e.g. R) describing a size of a coding interval of the arithmetic coding preceding the encoding symbol onto a quantization level; determining a product between the combined probability value and the quantization level (by looking up a pre-computed product, or by multiplication).

[0388] In a preferred embodiment, the arithmetic decoder is configured to perform quantizing the coding interval size information by applying a logical right-shift to the coding interval size information.

[0389] In preferred embodiments, the arithmetic decoder is configured to perform quantization of the encoding range size information R by where u, v and w are parameters.

[0390] In preferred embodiments of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with increasing values of the combined state variable or a scaled and / or rounded version thereof .

[0391] In preferred embodiments of the arithmetic decoder, wherein the different value intervals of the value range for the combined state variable or a scaled and / or rounded version thereof are equal.

[0392] In preferred embodiments of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with increasing values of the combined state variable or a scaled and / or rounded version thereof at a decreasing rate.

[0393] In preferred embodiments of the arithmetic decoder, the look-up table defines an exponential decay (e.g., falling from 0.5) within a tolerance of + / - 10% or + / - 20% (e.g.).

[0394] In preferred embodiments, the arithmetic decoder is configured to update the plurality of variable state values according to

[0395]

[0396] where z is a predetermined (constant) offset value; where is one or more weighting values; where is one or more weighting values, where A is or deviates from this equation for one or more extreme values of its argument only by being set to zero or scaled down to avoid an updated from deviating from a predetermined value range, (e.g., taking into account having a value range larger than ; i.e., is quasi-quantized to ; for extreme values of , the may deviate from its value range according to the above equation modified by the unmodified A; to avoid this, the entries corresponding to these extreme values can be scaled down or set to zero); where offset, and are predetermined parameters (examples are set out above).

[0397] In a preferred embodiment, the arithmetic decoder is configured to derive the interval size information (p

[0398] An arithmetic decoder for decoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to determine one or more state variable values (s i k ) (e.g. associated with a given context mode, indicated by index k) based on one or more state variable values (s k , R*p k ) representing statistics of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1) (e.g. in case a plurality of state variable values is determined, for statistics having different adaptation time constants), wherein the arithmetic decoder is configured to update the first state variable value (s k 1) depending on the decoded symbol and using a look-up table (A) (e.g. after decoding the decoded symbol).

[0399] In a preferred embodiment, the arithmetic decoder is configured to update the second state variable value (s k 2) depending on the decoded symbol and using said look-up table (A) (e.g. after decoding the decoded symbol).

[0400] In a preferred embodiment, the arithmetic decoder is configured to update the first state variable value and the second state variable value using different adaptation time constants.

[0401] In a preferred embodiment, the arithmetic decoder is configured to selectively increase or decrease a value determined using a look-up table depending on whether the decoded symbol is of a first value or a second value different from the first value.

[0402] In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value

[0403] In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof (e.g. of the inverted version of the previously calculated first state variable value) In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value

[0404] In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value or a scaled and / or rounded version thereof (e.g. of the inverted version of the previously calculated second state variable value) In a preferred embodiment, the arithmetic decoder is configured to, if the decoded symbol takes a first value, determine an index of an entry of a look-up table evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and an inverted (multiplied by -1) version of the previously calculated first state variable value

[0405] In a preferred embodiment, the arithmetic decoder is configured to, when determining an index of an entry of a look-up table evaluated when updating the first state variable value, apply a first scaling value (m k 1) to scale the previously calculated first state variable value (s k 1), and wherein the arithmetic decoder is configured to, when determining an index of an entry of a look-up table evaluated when updating the second state variable value, apply a second scaling value (mk 2) to scale the previously computed second state variable value (s k 2) by a first scaling value different from the second scaling value (and wherein the first and second scaling values are preferably integer powers of 2, and wherein the ratio between the first and second scaling values is preferably an integer power of 2, wherein the first and second scaling values are preferably different by a factor of at least 8).

[0406] In a preferred embodiment, the arithmetic decoder is configured to use a first scaling value (e.g., n k 1) to scale the value returned by the evaluation of the look-up table,

[0407] wherein the arithmetic decoder is configured to use a second scaling value (e.g., n k 2) to scale the value returned by the evaluation of the look-up table, wherein the first and second scaling values are different.

[0408] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values

[0409]

[0410] wherein A is a look-up table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0411] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values

[0412]

[0413] wherein A is a look-up table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0414] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values

[0415]

[0416] wherein A is a look-up table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein, is one or more weighting values.

[0417] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values

[0418]

[0419] wherein A is a look-up table (e.g., comprising integer values), wherein z is a predetermined (constant) offset value; wherein, is one or more weighting values; wherein, is one or more weighting values.

[0420] In a preferred embodiment of the arithmetic decoder, the entries of A monotonically decrease with increasing look-up table index.

[0421] In a preferred embodiment of the arithmetic decoder, A is or deviates from this equation for one or more extreme values of its argument only by being set to zero or scaled down to avoid an updated to deviate from its value range, (e.g., taking into account having a large value range; i.e., is quasi-quantized to ; for extreme values of , the may deviate from its value range according to the above equation by the unmodified A; to avoid this, the entries corresponding to these extreme values can be scaled down or set to zero); wherein offset, and are predetermined parameters (examples are set out above).

[0422] In a preferred embodiment of the arithmetic decoder, the last entry of the look-up table (when the first state variable value extends to a predetermined value range of the maximum allowable value or when the first state variable value exceeds a predetermined threshold value) is equal to zero.

[0423] In a preferred embodiment, the arithmetic decoder is configured to apply a clipping operation to the updated state variable value, so that the updated and clipped state variable value remains within a predetermined value range.

[0424] In a preferred embodiment, the arithmetic decoder is configured to apply a clipping operation to the updated state variable value according to

[0425]

[0426] wherein, is for is a maximum allowed value, and wherein is a minimum allowed value.

[0427] In a preferred embodiment, the arithmetic decoder is configured to apply different scaling values for different context models (e.g. such that at least one of the scaling values between two different context models is different).

[0428] In a preferred embodiment, the arithmetic decoder is configured to obtain interval size information as defined in one of the above embodiments.

[0429] An arithmetic decoder for decoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to determine one state variable value (s k ) representing a statistic of a plurality of previously decoded symbol values, and wherein the arithmetic decoder is configured to calculate a sub-interval width value (R ) for an arithmetic decoding of a symbol value to be decoded from a combined state variable value or a scaled and / or rounded version thereof LPS ) by using a one-dimensional look-up table (probTabLPS[Qp2(...)]) whose entries comprise probability values of different value intervals of a value range for the combined state variable value or the scaled and / or rounded version thereof mapping one state variable value (s k ) or the scaled and / or rounded version thereof onto a combined probability value and quantizing coding interval size information (e.g. R) describing a size of a coding interval of an arithmetic coding prior to the arithmetic decoding of the symbol value to be encoded onto a quantization level (Qr2(R)); determining a product between the probability value and the quantization level (by a look-up of pre-computed products or by a multiplication), wherein the arithmetic decoder is configured to perform a state variable value update depending on the symbol value to be decoded (actual decoding).

[0430] In a preferred embodiment, the arithmetic decoder is configured to derive a combined state variable value (e.g. can be a weighted sum of state variable values) as one state variable value (s i k ) from a plurality of state variable values (s k ) representing a statistic of a plurality of previously decoded symbol values (e.g. sequences of binary values) having different adaptation time constants (e.g. in case of a plurality of state variable values, for statistics having different adaptation time constants).

[0431] ​In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of the state variable values in order to obtain a combined state variable value.

[0432] In a preferred embodiment, the arithmetic decoder is configured to determine a sum of rounded values in order to obtain a combined state variable value s k , the rounded values being obtained by rounding the products of the state variable values and the associated weighting values .

[0433] In a preferred embodiment, the arithmetic decoder is configured to determine a combined state variable value s k according to the following formula:

[0434]

[0435] where s k 2is a state variable value, where N is the number of state variable values under consideration, where is a down-rounding operator, where d k i is a weighting value associated with a state variable value (e.g. a weighting factor controlling the influence of the respective state variable value on the combined state variable value) (where d k i is preferably an integer-valued power of 2, and where the ratio between two different d k i is preferably an integer-valued power of 2) [where the ratio between two different d k i is preferably larger than or equal to 8].

[0436] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value

[0437]

[0438] where z is a predetermined (constant) offset value; where is one or more weighting values; where is one or more weighting values, where A is or deviates from this formula for one or more extreme values of its argument only by being set to zero or being scaled down to avoid an updated to deviate from a predetermined value range, (e.g. considering to have a value range larger than ; i.e. to be quasi-quantized to ; for extremum of the function may be modified from its value range by the unmodified A; to avoid this, the entries corresponding to these extremum can be reduced or zeroed); wherein offset, and are predetermined parameters (examples are set out above).

[0439] In a preferred embodiment, the arithmetic decoder is configured to derive the

[0440] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to

[0441]

[0442] wherein A is a look-up table (e.g. comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0443] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to

[0444]

[0445] wherein A is a look-up table (e.g. comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0446] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to

[0447]

[0448] wherein A is a look-up table (e.g. comprising integer values), wherein z is a predetermined (constant) offset value; wherein is one or more weighting values; wherein is one or more weighting values.

[0449] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the coding interval size information by applying a logical right shift to the coding interval size information.

[0450] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the coding interval size information by to perform a quantization of the coding interval size information R, wherein u, v and w are parameters.

[0451] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of a state variable value or a scaled and / or rounded version thereof. In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of a state variable value or a scaled and / or rounded version thereof at a decreasing rate.

[0452] In a preferred embodiment of the arithmetic decoder, different value interval sizes of a value range for a state variable value or a scaled and / or rounded version thereof are equal. In a preferred embodiment of the arithmetic decoder, different value interval sizes of a value range for a state variable value or a scaled and / or rounded version thereof are equal.

[0453] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of a state variable value or a scaled and / or rounded version thereof at a decreasing rate. In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonically decrease with an increase of a state variable value or a scaled and / or rounded version thereof at a decreasing rate.

[0454] An embodiment according to the present application creates a video encoder, wherein the video encoder is configured to encode a plurality of video frames, wherein the video encoder comprises an arithmetic encoder according to one of the above embodiments, the arithmetic encoder being configured to provide an encoded binary sequence based on a sequence of binary values representing video content.

[0455] It is noted that the arithmetic encoder discussed herein is well suited for use within a video encoder. In this case, the symbols to be encoded and / or the previously encoded symbols can be symbols of a video bitstream. For example, the symbols to be encoded and / or the previously encoded symbols can represent bits of side information or control information and / or represent encoded transform coefficients of video content. In other words, the symbols to be encoded and / or the previously encoded symbols can represent any of the information that is included into a bitstream for representing video content. However, it is noted that the state variable values can be determined separately for different "contexts", i.e. for different types of information. For example, only bits associated with a given type of information, e.g. a specific type of side information, can contribute to a given state variable value or a given set of state variable values for obtaining a given combined state variable value. Thus, the interval size information can also be derived separately for different contexts, i.e. for the encoding of symbol values associated with different types of information, e.g. side information.

[0456] An embodiment according to the present application creates a video decoder, wherein the video decoder is configured to decode a plurality of video frames, wherein the video decoder comprises an arithmetic decoder (120; 220) according to one of the above embodiments, the arithmetic decoder being configured to provide a decoded binary sequence based on an encoded representation (211) of a binary sequence, e.g. based on decoded symbol values.

[0457] A video decoder is based on the same considerations as the video encoder. Therefore, the above explanations apply as well, wherein the coded symbols or symbols to be coded correspond to the decoded symbols.

[0458] Furthermore, it should be noted that respective methods and computer programs are created according to further embodiments of the present application.

[0459] A method for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present application, wherein the method comprises deriving interval size information (p i k ) for an arithmetic coding of one or more symbol values to be coded based on a plurality of state variable values (s k , R*p k ) associated with a given context mode indicated by an index k, wherein the plurality of state variable values represent statistics of a plurality of previously coded symbol values (e.g. a sequence of binary values 0 and 1) having different adaptation time constants, wherein the method comprises mapping a first state variable value (s k 1) or a scaled and / or rounded version thereof using a look-up table (LUT1) and mapping a second state variable value (s k 2) or a scaled and / or rounded version thereof using a look-up table (LUT1) in order to obtain said interval size information describing an interval size for an arithmetic coding of one or more symbols to be coded.

[0460] A method for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present application, wherein the method comprises deriving interval size information (p i k ) for an arithmetic coding of one or more symbol values to be coded based on a plurality of state variable values (s k , R*p k ) associated with a given context mode indicated by an index k, wherein the plurality of state variable values represent statistics of a plurality of previously coded symbol values (e.g. a sequence of binary values 0 and 1) having different adaptation time constants, wherein the method comprises deriving a combined state variable value (s i k ) based on the plurality of (individual) state variable values (s k ) (e.g. can be a weighted sum of the state variable values), and wherein the method comprises mapping the combined state variable value (s k ) or a scaled and / or rounded version thereof using a look-up table to obtain said interval size information describing the interval size for the arithmetic encoding of one or more symbols to be encoded.

[0461] An embodiment according to the present invention creates a method for encoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises determining one or more state variable values (s k 1, s k 2) representing statistics of a plurality of previously encoded symbol values (e.g. a sequence of binary values 0 and 1) (e.g. in case of a plurality of state variable values, statistics with different adaptation time constants), and wherein the method comprises deriving interval size information (p i k , R*p k , R*p k ) for the arithmetic encoding of one or more symbol values to be encoded based on the one or more state variable values (s k 1) associated with a given context model indicated by index k) using a look-up table (A) (e.g. after encoding the symbol to be encoded).

[0462] An embodiment according to the present invention creates a method for decoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises deriving interval size information (p i k , R*p k , R*p k ) for the arithmetic decoding of one or more symbol values to be decoded based on a plurality of state variable values (s k 1) or a scaled and / or rounded version thereof and a second state variable value (s k 2) or a scaled and / or rounded version thereof to obtain said interval size information describing the interval size for the arithmetic decoding of one or more symbols to be decoded.

[0463] An embodiment according to the present invention creates a method for decoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises determining a plurality of state variable values (s i k ) (e.g. associated with a given context mode indicated by index k) based on a plurality of state variable values (s k , R*p k ) representing a statistic of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1) having different adaptation time constants (e.g. the one or more symbols to be decoded comprise an estimate of the probability of certain symbol values), wherein the method comprises deriving a combined state variable value (s i k ) (e.g. can be a weighted sum of the state variable values) based on the plurality of (individual) state variable values (s k ) and wherein the method comprises using a look-up table to map the combined state variable value (s k ) or a scaled and / or rounded version thereof in order to obtain said interval size information describing an interval size for an arithmetic decoding of the one or more symbols to be decoded.

[0464] An embodiment according to the present invention creates a method for decoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises determining one or more state variable values (s k 1, s k 2) representing a statistic of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1) (e.g. the one or more symbols to be decoded comprise an estimate of the probability of certain symbol values) (e.g. in case a plurality of state variable values is determined, for statistics having different adaptation time constants), and wherein the method comprises deriving interval size information (p i k ) (e.g. associated with a given context mode indicated by index k) for an arithmetic decoding of one or more symbol values to be decoded based on the one or more state variable values (s k , R*p k ) representing a statistic of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1) (e.g. in case a plurality of state variable values is determined, for statistics having different adaptation time constants), wherein the method comprises updating the first state variable value (s k 1) depending on the decoded symbol and using a look-up table (A).

[0465] An embodiment according to the application creates a method performed by an encoder and a decoder according to one of the above embodiments.

[0466] An embodiment according to the application creates a computer program for performing the method according to one of the above embodiments when the computer program runs on a computer.

[0467] An embodiment according to the application creates a method for encoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises deriving interval size values (R i k ) for arithmetic coding of one or more symbol values to be encoded based on one or more state variable values (s LPS ) representing statistics of a plurality of previously encoded symbol values (e.g. a sequence of binary values 0 and 1), e.g. having different adaptation time constants, associated with a given context model, indicated by index k; wherein the method comprises determining the interval size value (R LPS ) using a base lookup table (BaseTabLPS) (the size of the base lookup table being smaller than the number of possible probability indices i in terms of probability indices), wherein the method comprises determining the interval size value (R LPS ) such that if a probability index (i) obtained based on the one or more state variable values (s LPS ) is in a first range (e.g. smaller than μ), the determined interval size value is identical to or is a rounded version of an element of the base lookup table, and such that if the probability index is in a second range (e.g. larger than or equal to μ), the determined interval size value is obtained using a scaling and rounding of an element of the base lookup table; and wherein the method comprises performing the arithmetic coding of the one or more symbols using the interval size value (R LPS ).

[0468] An embodiment according to the application creates a method for encoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises deriving interval size values (R i k ) for arithmetic coding of one or more symbol values to be encoded based on one or more state variable values (s LPS), the one or more state variable values representing statistics of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., with different adaptation time constants); wherein the method comprises determining an interval size value (R LPS ) based on a (current) probability value derived from the one or more state variable values and based on a (current) encoding interval size (R LPS ), (the size of the probability table being smaller than the number of possible probability indices i in terms of probability indices), wherein the probability table describes a set of a plurality of probability values (e.g., for probability indices between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) encoding interval size, and wherein the method comprises scaling an element of the probability table (Prob_TabLPS) (e.g., selected depending on the current probability value) to obtain the interval size value [R LPS ) in case the current probability value is not in the set of a plurality of probability values (e.g., the probability index associated with the current probability value is larger than or equal to μ) and / or in case the current encoding interval size (R i k ) to perform the arithmetic encoding of the one or more symbol values.

[0469] A method for decoding a plurality of symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the method comprises deriving an interval size value (R i k ) for the arithmetic decoding of one or more to-be-decoded symbol values based on one or more state variable values (s LPS ), the one or more state variable values representing statistics of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., with different adaptation time constants); wherein the method comprises determining an interval size value (R LPS ), (the size of the base lookup table being smaller than the number of possible probability indices i in terms of probability indices), wherein the method comprises determining the interval size value (R LPS ) such that, if a probability index (i) obtained based on the one or more state variable values (e.g., as i = Qp(p LPS )) is in a first range (e.g., smaller than μ), the determined interval size value is identical to or is a rounded version of an element of the base lookup table, and such that, if the probability index is in a second range (e.g., larger than or equal to μ), the determined interval size value is obtained using a scaling and rounding of an element of the base lookup table; and wherein the method comprises using the interval size value (RLPS ) using the interval size value (R

[0470] An embodiment according to the present invention creates a method for decoding a plurality of symbols having symbol values (e.g. binary values), wherein the method comprises deriving interval size values (R i k ) for the arithmetical decoding of one or more symbol values to be decoded (e.g. associated with a given context mode, indicated by index k) based on one or more state variable values (s LPS ) representing statistics of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1, e.g. having different adaptation time constants); wherein the method comprises determining an interval size value (R LPS ) based on a (current) probability value derived from the one or more state variable values and based on the (current) coding interval size (R LPS ) using a probability table (Prob TabLPS) (the size of the probability table in terms of probability indices being smaller than the number of possible probability indices i), wherein the probability table describes a set of a plurality of probability values (e.g. for probability indices between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, and wherein the method comprises scaling an element of the probability table (Prob TabLPS) (e.g. selected depending on the current probability value) to obtain the interval size value (R LPS ) in case the current probability value is not in the set of a plurality of probability values (e.g. the probability index associated with the current probability value is larger than or equal to μ) and / or in case the current coding interval size (R

[0471] An embodiment according to the present invention creates a computer program for performing the method according to one of the above embodiments when the computer program is run on a computer.

[0472] The above method is based on the same considerations as the above apparatus. However, it is noted that the method can optionally be supplemented by any of the features, functions and details described herein (also with respect to the apparatus). The method can optionally be supplemented by the features, functions and details, individually or in combination. The same applies to the computer program. BRIEF DESCRIPTION OF DRAWINGS

[0473] Embodiments according to the present invention will be described subsequently with reference to drawings, in which:

[0474] Figure 1A schematic block diagram of an apparatus for predictive encoding of pictures in a data stream according to an embodiment of the application is shown;

[0475] Figure 2 A schematic block diagram of a decoder according to an embodiment of the application is shown;

[0476] Figure 3 A schematic representation showing the relationship between a reconstructed signal and the combination of a prediction residual and a prediction signal is shown;

[0477] Figure 4 A schematic block diagram of an arithmetic encoder according to an embodiment of the application is shown;

[0478] Figure 5 A schematic block diagram of an arithmetic decoder according to an embodiment of the application is shown;

[0479] Figure 6 A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0480] Figure 7 A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0481] Figure 8 A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0482] Figure 9 A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0483] Figure 10a and Figure 10b A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0484] Figure 11 A schematic representation showing the concept for determining interval size information according to an embodiment of the application is shown;

[0485] Figure 12 A schematic representation showing the concept for determining one or more update state variables according to an embodiment of the application is shown;

[0486] Figure 13 A schematic representation showing the concept for determining interval size values according to an embodiment of the application is shown;

[0487] Figure 14 A schematic representation showing the concept for determining interval size values according to an embodiment of the application is shown;

[0488] Figure 14 shows a schematic representation of the concept for determining interval size values ​​according to an embodiment of the present invention;

[0489] Figure 15 shows a schematic representation of the concept for determining interval size values ​​according to an embodiment of the present invention;

[0490] Figure 16 shows a schematic representation of a video decoder according to an embodiment of the present invention; and

[0491] Figure 17 A schematic representation of a video decoder according to an embodiment of the invention is shown. DETAILED DESCRIPTION

[0492] 1. According to Figure 1 Encoder

[0493] The following description of the drawings presents an encoder for a block-based predictive codec ( Figure 1 ) and decoder ( Figure 2 ), which is a block-based predictive codec for encoding pictures of a video to form an example of a coding frame in which embodiments of the present invention can be constructed. Figures 1 to 3 In the following, a description of embodiments of the concepts of the present invention and how such concepts can be implemented into Figure 1 and Figure 2 The encoder and decoder are described in Figure 4 The embodiments described below can also be used to form Figure 1 and Figure 2 The encoder and decoder operate on the underlying coded frame.

[0494] Embodiments according to the present invention may include Figure 1 and Figure 2 Furthermore, any of the concepts disclosed herein may be used, for example, in a video encoder and a video decoder as described in reference Figure 1 and Figure 2 The entropy encoder 34 or the entropy decoder 50 described are used.

[0495] Figure 1 An apparatus is shown for predictively encoding a picture 12 into a data stream 14, exemplarily using transform-based residual coding. Reference numeral 10 is used to indicate an apparatus or encoder. Figure 2A corresponding decoder 20 is shown, i.e. an apparatus 20 configured to predictively decode the picture 12' from the data stream 14 also using transform-based residual decoding, wherein the prime has been used to indicate that the picture 12' reconstructed by the decoder 20 deviates from the picture 12 originally encoded by the apparatus 10 in terms of an encoding loss introduced by the quantization of the prediction residual signal. Figure 1 and Figure 2 Exemplarily, a transform-based prediction residual encoding is used, although embodiments of the present application are not limited to such a prediction residual encoding. For further details as described with respect to Figure 1 and Figure 2 The same is true for further details as described below, as will be outlined in the following.

[0496] The encoder 10 is configured to subject the prediction residual signal to a spatial-to-spectral transform and to encode the prediction residual signal thus obtained into the data stream 14. Likewise, the decoder 20 is configured to decode the prediction residual signal from the data stream 14 and to subject the prediction residual signal thus obtained to a spectral-to-spatial transform.

[0497] Internally, the encoder 10 can comprise a prediction residual signal former 22 generating the prediction residual 24 in order to measure a deviation of the prediction signal 26 from the initial signal, i.e. from the picture 12. The prediction residual signal former 22 can for example be a subtractor subtracting the prediction signal from the initial signal, i.e. from the picture 12. The encoder 10 then further comprises a transformer 28 subjecting the prediction residual signal 24 to a spatial-to-spectral transform in order to obtain a spectral-domain prediction residual signal 24', which is then subjected to quantization by a quantizer 32 also comprised by the encoder 10. The prediction residual signal thus quantized 24" is encoded into the bit stream 14. To this end, the encoder 10 can optionally comprise an entropy encoder 34 entropy-encoding the prediction residual signal subjected to the transform and quantization into the data stream 14. The prediction signal 26 is generated by a prediction stage 36 of the encoder 10 on the basis of the prediction residual signal 24" encoded into and decodable from the data stream 14. To this end, as Figure 2As shown in , the prediction stage 36 may internally comprise: a dequantizer 38 for dequantizing the prediction residual signal 24″ so as to obtain a spectral domain prediction residual signal 24′″ which corresponds to the signal 24′ except for the quantization losses; an inverse transformer 40 following the dequantizer for subjecting the latter prediction residual signal 24′″ to an inverse transform, i.e., a spectrum-to-spatial transform, so as to obtain a prediction residual signal 24″″ which corresponds to the original prediction residual signal 24 except for the quantization losses. The combiner 42 of the prediction stage 36 then recombines the prediction signal 26 with the prediction residual signal 24″″, such as by addition, so as to obtain a reconstructed signal 46, i.e., a reconstruction of the original signal 12. The reconstructed signal 46 may correspond to the signal 12′. The prediction module 44 of the prediction stage 36 then generates the prediction signal 26 based on the signal 46 by using, for example, spatial prediction (i.e., intra-picture prediction) and / or temporal prediction (i.e., inter-picture prediction).

[0498] 2. According to Figure 2 Decoder

[0499] Likewise, Figure 3 As shown in , the decoder 20 may internally be composed of components corresponding to the prediction stage 36 and interconnected in a manner corresponding to the prediction stage 36. Specifically, the entropy decoder 50 of the decoder 20 may entropy decode the quantized spectral domain prediction residual signal 24″ from the data stream, after which the dequantizer 52, the inverse transformer 54, the combiner 56, and the prediction module 58, which are interconnected and operate in the manner described above with respect to the modules of the prediction stage 36, recover the reconstructed signal based on the prediction residual signal 24″ such that Figure 3 As shown in , the output of combiner 56 produces the reconstructed signal, ie, picture 12'.

[0500] Although not specifically described above, it is readily appreciated that the encoder 10 can set some encoding parameters such as in accordance with some optimization scheme (e.g. in a way that optimizes some rate and distortion related criterion (i.e. encoding cost)) including e.g. prediction modes, motion parameters, etc. For example, the encoder 10 and the decoder 20 and the corresponding modules 44, 58 can support different prediction modes such as intra coding modes and inter coding modes, respectively. The granularity at which the encoder and the decoder switch between these prediction mode types can correspond to a subdivision of the pictures 12 and 12', respectively, into coding segments or coding blocks. In the unit of these coding segments, for example, the pictures can be subdivided into intra coded blocks and inter coded blocks. Intra coded blocks are predicted based on a spatially coded / decoded neighborhood of the respective block as outlined in more detail below. There can be several kinds of intra coding modes including directional or angular intra coding modes and an intra coding mode is selected for each intra coded segment according to which the respective segment is filled by extrapolating sample values of the neighborhood along a certain direction specific to the respective directional intra coding mode. The intra coding modes can for example also include one or more other modes such as a DC coding mode according to which the prediction of the respective intra coded block assigns a DC value to all samples within the respective intra coded segment and / or a planar intra coding mode according to which the prediction of the respective block is approximated or determined as a spatial distribution of sample values at sample positions of the respective intra coded block described by a two-dimensional linear function with slopes and offsets of a plane defined by neighboring samples driving the slopes and offsets. In contrast thereto, inter coded blocks can be predicted, for example, in time. For inter coded blocks, a motion vector can be signaled within the data stream, the motion vector indicating a spatial displacement of a portion of a previously coded picture of the video to which the picture 12 belongs, the previously coded / decoded picture being sampled at the data stream in order to obtain a prediction signal for the respective inter coded block. This means that, in addition to residual signal coding included by the data stream 14 such as entropy encoded transform coefficient levels representing quantized spectral domain prediction residual signals 24', the data stream 14 can have encoded therein encoding mode parameters for assigning encoding modes to the various blocks, prediction parameters for some blocks such as motion parameters for inter coded segments, and, optionally, further parameters such as parameters for controlling and signaling the subdivision of the pictures 12 and 12', respectively, into segments. The decoder 20 uses these parameters to subdivide the pictures in the same way as the encoder, to assign the same prediction modes to the segments, and to perform the same predictions to produce the same prediction signals.

[0501] 3. According to Figure 3 Functionality

[0502] Figure 3The relationship between the reconstructed signal of one aspect, i.e. the reconstructed picture 12', and the combination of the prediction residual signal 24" and the prediction signal 26 signaled in the data stream 14 of the other aspect is illustrated. As mentioned above, the combination can be an addition. The prediction signal 26 is illustrated in Figure 3 The subdivision of the picture area into intra coded blocks and inter coded blocks is illustrated in Figure 3 The combination of both is illustrated in Figure 3 In the picture area is first subdivided into rows and columns of tree root blocks and then further subdivided into one or more leaf blocks according to a recursive multi-tree subdivision.

[0503] Again, the data stream 14 can have an intra coding mode in which the intra coded blocks 80 are coded, which assigns one of several supported intra coding modes to the respective intra coded block 80. For the inter coded blocks 82, the data stream 14 can have one or more motion parameters coded therein. In general, the inter coded blocks 82 are not restricted to be coded in time. Alternatively, the inter coded blocks 82 can be any block predicted from a previously coded part, which is outside the current picture 12, such as a previously coded picture of the video to which the picture 12 belongs, or a picture of another view or a hierarchically lower layer in case the encoder and decoder are respectively a scalable encoder and decoder.

[0504] Figure 3 The prediction residual signal 24" in is also illustrated as a subdivision of the picture area into blocks 84. These blocks can be referred to as transform blocks in order to distinguish them from the coding blocks 80 and 82. In fact, Figure 3 It is shown that the encoder 10 and the decoder 20 can use two different subdivisions of the picture 12 and the picture 12', respectively, into blocks, namely one subdivision into the coding blocks 80 and 82 and another subdivision into the transform blocks 84. The two subdivisions can be identical, i.e. each coding block 80 and 82 can simultaneously form a transform block 84, but Figure 3It is shown that the case where the subdivision into transform blocks 84 forms an extension of the subdivision into coding blocks 80, 82 such that any boundary between two of the blocks 80 and 82 covers a boundary between two of the blocks 84, or in other words, each of the blocks 80, 82 coincides with one of the transform blocks 84, or with a cluster of transform blocks 84. However, the subdivision can also be determined or selected independently from each other such that the transform blocks 84 alternatively span across the block boundaries between the blocks 80, 82. As far as the subdivision into transform blocks 84 is concerned, the similar statements thus hold as the ones made with respect to the subdivision into blocks 80, 82, i.e., the blocks 84 can be the result of a regular subdivision of the picture area into blocks (with or without configuration into rows and columns), the result of a recursive multi-tree subdivision of the picture area, or a combination or any other category of partitioning. Incidentally, it is noted that the blocks 80, 82 and 84 are not limited to being square, rectangular or any other shape.

[0505] Figures 1 to 3 It is further illustrated that the combination of the prediction signal 26 and the prediction residual signal 24”” directly results in the reconstructed signal 12’. However, it is noted that more than one prediction signal 26 can be combined with the prediction residual signal 24”” to result in the picture 12’ according to alternative embodiments.

[0506] In Figure 1 The transform blocks 84 shall have the following importance. The transformer 28 and the inverse transformer 54 perform their transformations in units of these transform blocks 84. For example, many codecs use some kind of DST or DCT for all transform blocks 84. Some codecs allow for a skip of the transform such that for some of the transform blocks 84, the prediction residual signal is directly encoded in the spatial domain. However, according to the following embodiments, the encoder 10 and the decoder 20 are configured in a way that they support several transforms. For example, the transforms supported by the encoder 10 and the decoder 20 can include:

[0507] o DCT-II (or, alternatively, DCT-III), where DCT stands for discrete cosine transform

[0508] o DST-IV, where DST stands for discrete sine transform

[0509] o DCT-IV

[0510] o DST-VII

[0511] o identity transform (IT)

[0512] Naturally, while the transformer 28 will support all forward transform versions of these transforms, the decoder 20 or the inverse transformer 54 will support their corresponding backward or inverse versions:

[0513] o inverse DCT-II (or, alternatively, inverse DCT-III)

[0514] o Inverse DST-IV

[0515] o Inverse DCT-IV

[0516] o Inverse DST-VII

[0517] o Identity transform (IT)

[0518] The subsequent description provides more details on the transforms that can be supported by the encoder 10 and the decoder 20. In any case, it should be noted that the set of supported transforms can comprise only one transform, such as one spectral-to-spatial or spatial-to-spectral transform.

[0519] As mentioned above, it has been presented Figure 2 As an example, in this example, the inventive concept described further below can be implemented in order to form a particular example of an encoder and a decoder according to the present application. In this regard, Figure 1 and Figure 2 may represent possible implementations of the video encoder and the video decoder described below, respectively. However, Figure 1 and Figure 3 are merely examples. The encoder according to embodiments of the present application can perform a block-based encoding of the pictures 12 using the concepts outlined in more detail below and can differ from an encoder such as Figure 2 for example in that the encoder according to embodiments of the present application is not a video encoder but a still picture encoder, in that the encoder according to embodiments of the present application does not support inter-prediction, or in that the subdivision into blocks 80 is performed in a different manner than in Figure 3 Likewise, the decoder according to embodiments of the present application can perform a block-based decoding of the pictures 12' from the data stream 14 using the encoding concepts outlined further below, but can differ from a decoder 20 such as Figure 4 for example in that the decoder according to embodiments of the present application is not a video decoder but a still picture decoder, in that the decoder according to embodiments of the present application does not support intra-prediction, or in that the decoder according to embodiments of the present application subdivides the pictures 12' into blocks in a different manner than described with respect to Figure 4 and / or in that the decoder according to embodiments of the present application does not derive the prediction residuals from a transform domain but from the data stream 14 in a spatial domain, for example.

[0520] 4. According to Figure 4 Arithmetic Coder

[0521] Figure 4 A schematic block diagram of an arithmetic encoder according to embodiments of the present application is shown.

[0522] According to Figure 4The arithmetic encoder 400 can be used, for example, in a video encoder. However, alternatively, the arithmetic encoder 400 can also be used in an audio encoder, an image encoder, an encoder for encoding coefficients of a neural network, etc.

[0523] The arithmetic encoder 400 is configured to receive a symbol 410 to be encoded, wherein the symbol 410 to be encoded can be represented by a symbol value. Further, the encoder 400 also typically receives context information 412, which can describe, for example, which type of information is represented by the symbol 410 to be encoded. For example, the context information 412 can be represented by a context index k, which describes, for example, which type of side information is described by the symbol 410 to be encoded or which type of transform coefficient is encoded by the symbol 410.

[0524] Further, the arithmetic encoder 400 is configured to provide a bitstream 420, which represents the symbol 410 to be encoded or a sequence of symbols 410 to be encoded.

[0525] The arithmetic encoder 400 comprises an arithmetic encoding core or arithmetic encoder core 430, which receives the symbol 410 to be encoded and provides the bitstream 420 based on the symbol to be encoded. The arithmetic encoding core or arithmetic encoder core 430 typically receives interval size information, which can represent, for example, a size of a sub-interval (from a total encoding interval) to which a symbol (e.g., a possibly minimum symbol) is mapped. Further, the arithmetic encoding core or arithmetic encoder core also provides encoding interval size information 434, which describes a current encoding interval size (e.g., a total size of the encoding interval). It is to be noted that the encoding interval size 434 can change over time depending on the encoded symbol 410 (or, more precisely, depending on a sequence of encoded symbols 410).

[0526] The encoding interval size can change, for example, due to a rescaling operation performed in the arithmetic encoding process. For example, the arithmetic encoding core can perform functionality as described, for example, in the High Efficiency Video Coding (HEVC) standard (H.265).

[0527] The arithmetic encoder 400 also comprises an encoding interval size determination or encoding interval size determinator 440. The encoding interval size determination 440 receives the symbol 410 to be encoded or, at least, one or more previously encoded symbols, and, preferably, but not necessarily, also the context information 412. Further, the interval size determination 440 receives the encoding interval size information 434. The interval size determination 440 provides the interval size information 432 for use by the arithmetic encoding core 430 based on the encoding interval size information, the symbol 410 to be encoded (or, at least, one or more previously encoded symbols) and, optionally, the context information 412.

[0528] As to the functionality of the concept according to Figure 4 It is noted that the interval size determination 440 is used to (continuously, e.g. for each new symbol to be encoded) update the interval size information 432. In this update, statistics of previously encoded symbols are taken into account. Further, also the encoding interval size information 434 provided by the arithmetic encoder 430 is taken into account, since the interval size information 432 should preferably be provided in an appropriate relationship with the encoding interval size information 434. In this context, the encoding interval size information 434 can for example represent the current size of the (total) encoding interval (which can be caused by an irregularly occurring re-normalization of the encoding interval), whereas the interval size information 432 can for example describe the size of a fraction within the overall (total) encoding interval associated with a particular symbol (e.g. with the smallest possible symbol). Thus, the interval size information is typically smaller than the encoding interval size information 434, since the encoding interval size information 434 represents the total size of the encoding interval, whereas the interval size information 434 represents the size of a fraction of the encoding interval associated with a particular symbol. Thus, the interval size information 432 is typically scaled with the encoding interval size information 434 (wherein said scaling can optionally include a certain degree of non-linear behavior to avoid situations in which the encoding would be very inefficient).

[0529] Further, by determining the appropriate interval size information 432, taking into account the total size of the encoding interval (represented by the encoding interval size information 434) and the statistics of previously encoded symbols (and context), the arithmetic encoding can be performed in an efficient manner, wherein taking into account the statistics of previously encoded symbols helps to improve the encoding efficiency.

[0530] It is noted, however, that the arithmetic encoder 400 according to Figure 4 may be used in any signal encoder as disclosed herein (e.g. in a video encoder). Further, it is noted that the arithmetic encoder 400 according to Figure 5 may optionally be supplemented by any of the features, functionalities and details described herein. In particular, the interval size determination 440 can use any of the concepts disclosed herein, both individually and in combination.

[0531] In summary, the arithmetic encoder 400 according to Figure 5 may be supplemented by any of the features, functionalities and details disclosed herein, both individually and in combination.

[0532] 5. Arithmetic decoder according to Figure 6 claim 4

[0533] Figure 6A schematic block diagram of an arithmetic decoder 500 according to an embodiment of the application is shown. The arithmetic decoder 500 is configured to receive a bitstream 510 (which can correspond to the bitstream 420) and provide a decoded symbol 520 (or, in a sequence of decoded symbols 520) based on the bitstream. Typically, the decoded symbol 520 can correspond to the symbol 410 to be encoded. Typically, the arithmetic encoder 400 and the arithmetic decoder 500 can perform lossless encoding and decoding when combined together, such that the symbols 410 encoded by the arithmetic encoder 400 provide the bitstream 420 which, when decoded by the arithmetic decoder 500, allows for a "perfect" reconstruction, such that the decoded symbols 520 correspond to the encoded symbols 410.

[0534] The arithmetic decoder 500 comprises an arithmetic decoding core or arithmetic decoder core 530 which receives the bitstream and provides the decoded symbol 520 based on the bitstream. The arithmetic decoding core 530 typically provides an encoded interval size information 532 which can substantially correspond to the encoded interval size information 434, and receives an interval size information 534 which can correspond to the interval size information 432. The arithmetic decoder 500 also comprises an encoded interval size determination or encoded interval size determinator 540 which is configured to provide the interval size information 534 used by the arithmetic decoding core 530 based on the encoded interval size information 532 and also based on one or more decoded symbols 520. Furthermore, the encoded interval size determination 540 can optionally use context information 550 which can describe which type of information is represented by the decoded symbol 520 currently considered. Thus, the encoded interval size determination 540 can determine the interval size information 534 for a plurality of different "contexts", i.e. for a plurality of different types of decoded information (or, different types of information to be decoded).

[0535] The arithmetic decoding core 530 may, for example, determine in which sub-interval of a total encoded interval (the size of which is described by the encoded interval size information) a value represented by the bitstream 510 lies, and thus decide which symbol is represented by the bitstream. The size of the sub-intervals of the total encoded interval is described by the interval size information 534, for example. The interval size information 534 may, for example, describe the size of a sub-interval of the total encoded interval associated with a particular symbol (e.g. the smallest possible symbol). Furthermore, it is noted that the encoded interval size (e.g. the size of the total encoded interval) can change non-periodically (or, even for each decoded symbol) due to renormalization.

[0536] In summary, the arithmetic decoder 500 is used to provide decoded symbols 520 based on the bitstream 510, wherein a history of previously decoded symbols (or more precisely, statistics of previously decoded symbols) is used to (dynamically) adjust the interval size associated with a symbol to be decoded (wherein the adjusted interval size is described by the interval size information 534). Moreover, it should be noted that the interval size determination 540 can be substantially identical to the interval size determination 440, for example. Also, it should be noted that the interval size determination 540 can comprise any of the functionality disclosed herein. Thus, any of the concepts for determining an interval size can be used for the interval size determination 540.

[0537] It should be noted that the arithmetic decoder 500 described herein can be used in any of the decoders described herein (e.g., an audio decoder or a video decoder). However, the arithmetic decoder 500 can also be used to decode images or coefficients of a neural network.

[0538] Generally, the arithmetic decoder 500 described herein can be supplemented, individually and in combination, by any of the features, functionality, and details disclosed herein.

[0539] 6. The concept for determining interval size information according to Figure 4 claim 5

[0540] Figure 5 A schematic representation of a concept for determining interval size information is shown, which can be used in an arithmetic encoder 400 according to Figure 7 or in an arithmetic decoder 500 according to Figure 7 The concept 600, which can be implemented in the form of an interval size determination or in the form of an interval size determiner, can be used to implement the interval size determination or interval size determiner 440, and / or can be used to implement the interval size determination or interval size determiner 540, for example.

[0541] The interval size determination 600 can receive one or more symbol values 610, which can correspond to a symbol 410 to be encoded or can correspond to a previously encoded symbol, or can correspond to one or more previously decoded symbols 520, for example. Moreover, the interval size determination 600 can optionally receive context information 612, which can be in the form of a context model index k, for example. Furthermore, the interval size determination 600 can provide interval size information 620, which can correspond to the interval size information 432 or which can correspond to the interval size information 534, for example.

[0542] Taking into account the sign value 610 and optionally the context information 612, the interval size determination comprises a state variable update 640, which provides one or more updated state variables 642 based on one or more previously determined state variables 644. The state variable update 640 can also take into account one or more other parameters, which can be static, for example, or which can be adapted to individual contexts depending on the context information, for example. For example, the state variable update 640 can take into account one or more weighting factors, i.e., and / or The state variable update 640 can optionally also take into account an "offset" (e.g., z) and a look-up table (e.g., A). Furthermore, the state variable update 640 can optionally be initialized to a start value in response to information signaling that a state variable initialization should be performed. In case of a state variable initialization, the previously determined state variable values 644 can be ignored, and the "updated" state variables 642 can be set to the initial value, which can be predetermined, for example.

[0543] Furthermore, the interval size determination 600 comprises an interval size determination core, which determines the interval size information 620 based on the updated state variables (or, state variable values) 620. Furthermore, the interval size determination core 650 can take into account, for example, the coded interval size information 652, which can correspond to the coded interval size information 432 or to the coded interval size information 532, for example.

[0544] Thus, the interval size determination core 650 can provide the interval size information describing the size of a sub-interval associated with a particular symbol based on the coded interval size information 652 describing the total size of the coded interval and based on information about the statistics of previously coded or previously decoded symbols, which statistics of previously coded or previously decoded symbols are represented by the one or more updated state variables 642.

[0545] It should be noted, however, that the interval size determination 600 can be used in the arithmetic encoders and arithmetic decoders described herein. Furthermore, the interval size determination 600 can be supplemented by any of the features, functionalities, and details disclosed herein. In particular, the state variable update can use any of the concepts disclosed herein. Furthermore, the interval size determination core can also use any of the concepts disclosed herein.

[0546] It should be noted that any of the concepts described herein for state variable updating can optionally be combined with any of the concepts for interval size determination kernels disclosed herein. Any of the features, functionalities, and details disclosed herein can be introduced into the concept 600, individually and in combination. It should be noted that any of the features, functionalities, and details disclosed with respect to determining interval size information 620 based on one or more updated state variables 642 can be used independent of any of the features, functionalities, and details described with respect to state variable updating.

[0547] 7. The interval size determination concept according to Figure 7 claim 6

[0548] Figure 7 A schematic representation of an interval size determination concept 700 is shown. In particular, Figure 7 A concept is shown that can employ the functionality of an "interval size determination kernel". In other words, according to Figure 6 The concept 700 of FIG. 7 is suitable for providing interval size information based on updated state variables and also based on encoded interval size information. However, the concept 700 of FIG. 7 can be implemented as an interval size determination or interval size determinator. Figure 7 The concept 700 of FIG. 7 is suitable for providing interval size information based on updated state variables and also based on encoded interval size information. However, the concept 700 of FIG. 7 can be implemented as an interval size determination or interval size determinator.

[0549] The interval size determination 700, which can be seen as an "interval size determination kernel", receives updated state variables 710, which may, for example, correspond to the updated state variables 642. Furthermore, the interval size determination 700 receives encoded interval size information 712, which may, for example, correspond to the encoded interval size information 652. Optionally, the interval size determination 700 also uses context information, since the functionality of the interval size determination 700 can be adjusted depending on the context. For example, the context information can take the form of a context model index k. Thus, the specific functionality or parameters used in the interval size determination 700 can vary depending on the actual context as represented by the context model index k.

[0550] The interval size determination 700 provides interval size information 720, which can correspond to the interval size information 620.

[0551] Thus, the interval size determination 700 may, for example, replace the interval size determination kernel 650 described in Figure 8

[0552] In the following, some details of the interval size determination kernel 700 will be described.

[0553] ​It should be noted that the interval size determination core 700 includes a first processing path 730 and a second processing path 750 which can be considered as alternatives. The first processing path 730 includes (optional) scaling / rounding 732, wherein the first update state variable (e.g., ) is scaled and / or rounded. For example, the scaling factor The scaling of the first updated state variable (value) may be performed. For example, the scaling may be multiplication by a scaling factor. For example, the rounding may be rounding down to the next integer value that is less than or equal to the result of the scaling. Similarly, the first processing path 730 may include a second (optional) scaling / rounding 734, which may include, for example, rounding the value by a corresponding scaling factor (e.g., ) to scale the second updated state variable (e.g., ), and may also include rounding down to the next integer value that is less than or equal to the result of the scaling. Thus, a first scaling and rounding state variable 733 and a second scaling and rounding state variable 735 may be obtained. Furthermore, the first processing path 730 may include a first lookup table-based mapping 736 that receives the first scaling and / or rounding update state variable 733 and further receives the quantized coding interval size information 762. For example, the first lookup table-based mapping 736 may use a two-dimensional lookup table to obtain the first interval size contribution 737. Similarly, the first signal processing path 730 may include a second lookup table-based mapping 738 that receives the second scaling and / or rounding update state variable 735 and the quantized coding interval size information 762 and provides a second interval size contribution 739 based on the second scaling and / or rounding update state variable and the quantized coding interval size information.

[0554] For example, the mapping based on the first lookup table 736 can use a two-dimensional lookup table, where the first lookup table index can be determined by the scaled and / or rounded first update state variable 733, and where the second lookup table index can be determined by the quantized encoding interval size information 762. For example, the first scaled and / or rounded update state variable 733 can take an integer value in a certain range (e.g., from 0 to a maximum value, or from 1 to a maximum value, or within an acceptable range as a first table index). Similarly, the quantized interval size information 762 can take the form of an integer value, which can serve as a second table index. For example, the quantized encoding interval size information 762 can take the form of an integer value in a range between 0 and a maximum value or between 1 and a maximum value (or, in a range of any values that can serve as a second table index). In other words, both the first scaled and / or rounded update state variable 733 and the quantized encoding interval size information 762 are used as table indices to select an element of a lookup table used in the mapping based on a lookup table 736. Thus, the entry of the lookup table used is provided as a first interval size contribution 737.

[0555] However, the mapping based on the second lookup table 738 can be performed in the same way, where the scaled and / or rounded second update state variable 735 and the quantized encoding interval size information 762 are used as two indices (e.g., i and j) for selecting an entry of a lookup table used in the mapping based on a second lookup table 738. Thus, a second interval size contribution 739 is obtained.

[0556] The first interval size contribution 737 and the second interval size contribution 739 can be combined in a combination 740, thereby obtaining a combined interval size contribution 742. The combined interval size contribution 742 can directly serve as the interval size information 720, or the interval size information 720 can be derived from the combined interval size contribution 742 using post-processing (e.g., fixed scaling or rounding, etc.).

[0557] In summary, when using the first processing path 730, the interval size information 720 can be obtained by combining the results of two or more mappings based on a lookup table 736, 738, where the individual entries of the lookup tables to be used are determined based on the respective update state variables and based on the encoding interval size information. Thus, the interval size information 720 can be obtained in a very efficient way.

[0558] However, alternatively, a processing as shown in the second signal processing path 750 can be performed. The processing performed by the second signal processing path is computationally more efficient at the cost of a slight reduction in accuracy. For example, the second signal processing path 750 comprises a combining 751 in which the first updated state variable is combined with the second updated state variable (and optional additional updated state variables) to obtain a combined updated state variable 751a. The second processing path 750 also comprises an optional scaling / rounding 752 which, for example, can correspond to the scaling / rounding 732, 734. Thus, the scaling / rounding 750 provides a scaled and / or rounded combined updated state variable 733 which is used to select an element in a look-up table based mapping 756. The look-up table based mapping 756 is preferably a two-dimensional mapping in which a first index of the look-up table is determined by the combined updated state variable 751a or a scaled and / or rounded version thereof 753 and in which a second index of the two-dimensional look-up table is determined by the quantized encoding interval size information 762. Thus, the look-up table based mapping 756 provides an interval size contribution 757 which can be used as the interval size information 752 or from which the interval size information 720 can be derived by optional post-processing (e.g. scaling).

[0559] In summary, the interval size determination kernel 700 is configured to obtain the interval size information 720 based on the updated state variable 710 and taking into account the encoding interval size information 712. A look-up table based mapping is used in the first signal processing path 720 to determine two or more interval size contributions 737, 739 which are used to derive the interval size information 720. A look-up table based mapping 756 is used in the alternative second signal processing path 750 to determine the interval size contribution 757 or the interval size information 720. By using a look-up table based mapping which takes both the updated state variable and the encoding interval size information 712 into account to determine an index of the look-up table, an especially efficient computation can be achieved in which a multiplication operation can be saved.

[0560] It is noted that the interval size determination kernel 700 according to Figure 8 may be used in any of the arithmetic encoders and arithmetic decoders described herein. Furthermore, the interval size determination kernel 700 can optionally be supplemented by any of the features, functionalities and details disclosed herein, both individually and in combination.

[0561] 8. According to Figure 8 The interval size determines the kernel

[0562] Figure 9 A schematic block diagram of an interval size determination kernel 800 according to an embodiment of the present application is shown. According to Figure 9The interval size determination core 800 can be used in any of the audio encoders and audio decoders disclosed herein.

[0563] The interval size determination core 800 receives the update state variable 810 and also receives the encoded interval size information 812. The update state variable 810 may, for example, correspond to the update state variable 710 or to the update state variable 642. The encoded interval size information 812 may, for example, correspond to the encoded interval size information 712 or to the encoded interval size information 652 or to the encoded interval size information 532 or to the encoded interval size information 434. Furthermore, the interval size determination core 800 provides the interval size information 820, which may, for example, correspond to the interval size information 720 or to the interval size information 620 or to the interval size information 534 or to the interval size information 432.

[0564] The interval size determination core 800 may, for example, comprise a determination 830 of a probability value 832. The probability value 832 may, for example, be obtained based on one or more update state variables 810 and may, for example, describe a probability of a symbol (e.g. "0" or "1") to be encoded. The interval size determination core 830 further comprises a determination 840 of a probability of a less probable symbol (or, alternatively, of a least probable symbol), which determination can provide a probability value 842 describing a probability of the less probable symbol or of the least probable symbol. The interval size determination core 800 also comprises a quantization 850, which quantizes the probability value 842 to obtain a quantized probability value 852. Furthermore, the interval size determination core 800 also comprises a quantization 860, which quantizes the encoded interval size information to obtain a quantized encoded interval size information 862. The interval size determination core 800 also comprises a mapping 870, which receives the quantized probability value 852 and the quantized encoded interval size information 862 and maps both the quantized probability value 852 and the quantized encoded interval size information 862 onto the interval size information 820.

[0565] In the following, some details regarding the functionality of the interval size determination core 800 will be described.

[0566] The determination 830 of the probability value 832 can for example comprise a first signal processing path 880 or a second signal processing path 890. It is noted that the signal processing paths 880, 890 can be considered as alternatives. The first signal processing path 880 comprises a first mapping 882 which maps the first updated state variable 810 onto a first probability value 883, for example using a look-up table. The first signal processing path 880 also comprises a second mapping 884 which maps the second updated state variable 810 onto a second probability value 885, for example using a look-up table. The first signal processing path 880 also comprises a combination 886 which can for example be configured to combine the first probability value 883 with the second probability value 885, for example using a linear combination in which different scaling can be applied to the first probability value 883 and the second probability value 885 (and in which, optionally, quantization can be used). The combination 886 thus provides the probability value 832.

[0567] Alternatively, the second signal processing path 890 can be used. The second signal processing path 890 comprises a combination 892 which receives the two or more updated state variables 810 and which provides a combined updated state variable 893 based on the two or more updated state variables (for example using a linear combination). Furthermore, the second signal processing path 890 comprises a mapping 894 which maps the combined updated state variable 893 onto the probability value 832, for example using a look-up table.

[0568] Thus, the probability value 832 can be obtained using the first signal processing path 880 or using the second signal processing path 890, which can be considered as two different alternatives. The first signal processing path incurs a slightly increased complexity due to the two mappings 882, 884 and also a slightly increased accuracy. In contrast, the second signal processing path 890 comprises only a single mapping and is thus slightly less complex, at the cost of a slightly reduced accuracy.

[0569] In the determination 850 of the probability of the less likely symbol, the probability of the less likely symbol can for example be determined by selecting the smaller value from the probability value 832 and the complement of this probability value (1 minus the probability value). Thus, a probability value 842 is obtained which describes the probability of the less likely symbol. This probability value 842 is quantized in the quantization 850, for example using a quantization function Q p (.) or Qp2(.). Thus, a quantized probability value or probability index i 852 is obtained and used in the mapping 870.

[0570] The quantization 860 of the coding interval size information 812, for example, can provide a quantized coding interval size value 862 or a quantized coding interval size index j. However, in some cases, a quantized coding interval size value Q r Both the quantized coding interval size value and the coding interval size index j, for example, can be used in the mapping 860, e.g., using a mapping mechanism based on the look-up table RangeTabLPS described herein, and / or the mapping mechanism can be based on the look-up table BaseTabLPS described herein and / or the mapping mechanism can use the look-up table ProbTabLPS described herein. Optionally, the scaling function Scal(.) described herein can also be used in the mapping 870.

[0571] In other words, there can be many different mappings that can be used to derive the interval size information 820 based on the quantized probability value or probability index 852 and based on the quantized coding interval size 862 and / or the coding interval size index j.

[0572] As a complementary note, it should be noted that the quantization 850, for example, can map the probability value 842 (or, alternatively, the probability value 832 if the determination 840 is omitted) onto integer values. Alternatively, the quantization 850 can map the value 842 (or, alternatively, the value 832 if the determination 840 is optionally omitted) onto values with a lower numerical resolution than the probability value 832 or the probability value 842. However, preferably, the quantized probability value 852 takes the form of a probability index (e.g., i), i.e., the form of an integer representation, which can be used as a table index referring to an entry of a look-up table (e.g., RangeTabLPS).

[0573] The quantization 860 can lead to different results. The coding interval size information 812, for example, can be quantized into a quantized coding interval size information 862 comprising a lower resolution than the coding interval size information 812. In other words, the interval of values of the coding interval size information 812 can be mapped onto individual quantized values of the quantized coding interval size information 862, wherein the quantization, for example, can be linear or non-linear. Alternatively or additionally, the coding interval size information can be mapped onto a coding interval size index j, i.e., onto a range of consecutive integer values, which can be directly used as a table index for selecting an entry of a look-up table. However, it should be noted that, in some cases, both a quantized coding interval size information quantized to different values and a quantized coding interval size information quantized to different indices j, i.e., quantized to integer values, can be used.

[0574] As described above, the mapping 870 can be performed using different concepts described herein.

[0575] In summary, the interval size determination core 800 can be used in any of the arithmetic encoders and arithmetic decoders described herein. Moreover, the interval size determination core 800 can optionally be supplemented by any of the features, functionalities, and details disclosed herein, individually and in combination.

[0576] 9. The interval size determination core of claim Figure 9 Figure 9 8. The interval size determination core of claim 7, wherein

[0577] Figure 10a A schematic block diagram of an interval size determination core 900 is shown, which can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein.

[0578] The interval size determination core 900 is configured to receive state variable values 910 and to provide interval size information 920. Generally, the interval size determination core 900 is configured to derive the interval size information 920 for an arithmetic encoding of one or more symbol values to be encoded (or, for an arithmetic decoding of one or more symbol values to be decoded) based on a plurality of state variable values 910 representing statistics of a plurality of previously encoded symbol values with different adaptation time constants. The interval size determination core 900 comprises an optional first scaling and / or rounding 930, wherein a first state variable (which can be an updated state variable) is scaled and / or rounded. The interval size determination core 900 also comprises an optional second scaling and / or rounding 934, wherein a second state variable is scaled and / or rounded. Thus, the optional first scaling and / or rounding provides a first scaled and / or rounded state variable 932, and the optional second scaling and / or rounding 934 provides a second scaled and / or rounded state variable 934.

[0579] The interval size determination core 900 also comprises a first mapping 940 using a lookup table. The first mapping 940 maps the first state variable or the scaled and / or rounded version 932 of the first state variable using a lookup table (e.g., a lookup table LUT1 or a two-dimensional lookup table defining R.LUT1 for a plurality of different values R). Thus, a first probability value 942 is obtained by the first mapping 940. The interval size determination core 900 also comprises a second mapping 950 mapping the second state variable or the scaled and / or rounded version 934 thereof using a lookup table (e.g., using a lookup table LUT1 or a two-dimensional lookup table defining R.LUT1 for a plurality of different values R). Thus, a second probability value 952 is obtained by the second mapping 950 based on the second state variable value or based on the scaled and / or rounded version 934 thereof.

[0580] Finally, the interval size information 920 is obtained based on the first probability value 942 and based on the second probability value 952.

[0581] However, it should be noted that the determination of the first probability value 942 and the second probability value 952 should only be considered as an example of quantities that can be obtained using the first mapping 940 and the second mapping 950. In contrast, other quantities can also be derived using the first mapping 940 and the second mapping 950, as for example, the contribution to the interval size information 920.

[0582] However, it should be noted that, Figure 10b The interval size determination core 900 described in the foregoing can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein. Moreover, it should be noted that the interval size determination core 900 can optionally be supplemented by any of the features, functionalities, and details described herein, individually and in combination.

[0583] 10. The method of claim 1, wherein the interval size determination is based on Figure 10a and Figure 10a ​

[0584] Figure 10a A schematic representation of a concept for determining interval size information is shown, which can be used in, for example, an interval size determination core.

[0585] As can be seen, Figure 9The concept 1000 receives a plurality of state variable values 1010a, 1010b, which can correspond to the state variable values 910 and which can be updated state variable values. Furthermore, the concept 1000 provides interval size information 1020, which can correspond to the interval size information 920. The concept 1000 comprises a first mapping 1040, which maps the first state variable value 1010a (or, alternatively, a scaled and / or rounded version thereof) onto a first probability value 1042, which can correspond to the first probability value 942. Furthermore, the concept 1000 comprises a second mapping 1050, which maps the second state variable value 1010b (or, alternatively, a scaled and / or rounded version thereof) onto a second probability value 1052. Furthermore, the concept 1000 comprises a combination of the first probability value 1042 and the second probability value 1052, wherein the combination can be performed, for example, using equation (7). Thus, the combination 1060 provides a combined probability value 1062. Furthermore, the concept 1000 comprises a multiplication 1070 of the combined probability value 1062, wherein the multiplication can be performed by encoding the interval size value R. Thus, the interval size information 1020 is obtained based on the multiplication 1070 between the combined probability value 1062a and the encoded interval size value R. The interval size information 1020 can describe, for example, the size of the encoding interval associated with the less probable symbol or with the least probable symbol (or, alternatively, the size of the encoding interval associated with the more probable symbol or with the most probable symbol). Optionally, the concept 1000 can comprise a mechanism for deriving the probability of the less probable symbol or of the least probable symbol (e.g., between the combination 1060 and the multiplication 1070), or can comprise a mechanism for deriving the interval size information associated with the less probable symbol or with the least probable symbol based on the result of the multiplication 1070.

[0586] Thus, the concept 1000 according to Figure 10b may implement the functionality as described with respect to Figure 10b .

[0587] It is noted that the concept 1000 can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein.

[0588] Moreover, the concept 1000 can optionally be supplemented, both individually and in combination, by any of the features, functionalities, and details disclosed herein.

[0589] Figure 10bAn illustrative block diagram showing the concept 1080 of providing interval size information 1084 based on a first state variable value 1082a and a second state variable value 1082b is shown. The concept 1080 comprises a first mapping 1085a of the first state variable value 1082a or a scaled and / or quantized version thereof onto a first interval size contribution 1086a. Further, the concept 1080 comprises a second mapping 1085b of the second state variable value 1082b or a scaled and / or quantized version thereof onto a second interval size contribution 1086b.

[0590] The first mapping 1085a and the second mapping 1085b may, for example, use a two- dimensional look-up table to perform the mapping. The two-dimensional look-up table may, for example, define a multiplication between quantized values of the encoded interval size information R and one-dimensional look-up tables (e.g. LUT1) for a plurality of different values R. In other words, the rows or columns of the two-dimensional look-up table used in the mapping 1085a can define a multiplication between a look-up table LUT1 as described herein and the respective encoded interval size value associated with the row or column. The two-dimensional look-up table used in the second mapping 1085b can also be so, wherein the look-up table can be the same as or can be different from the look-up table used in the first mapping 1085a. Further, it is noted that the encoded interval size information can be used in the first mapping 1085a and the second mapping 1085b to select the appropriate element of the two-dimensional look-up table (wherein, for example, the first look-up table index can be based on the respective state variable value and wherein the second look-up table index can be based on its encoded interval size value (or quantized version Qr(R))).

[0591] Thus, the interval size information 1084 can be obtained at very low computational complexity. Further, it is noted that an appropriate processing can be inserted between the mappings 1085a, 1085b and the combination 1088 of the interval size contributions 1086a, 1086b in which the interval size contributions are combined to determine the contribution to the interval size of the interval associated with the less likely symbol or the least likely symbol. Alternatively, however, a post-processing can optionally be inserted after the combination 1088 to determine the interval size for the least likely symbol or for the less likely symbol based on the result of the combination 1088 of the interval size contributions 1086a, 1086b.

[0592] In summary, the concept 1080 according to Figure 11 The concept 1080 can be used to derive the interval size information 1086 based on the state variable values 1082a, 1082b and also depending on the encoded interval size information or encoded interval size value.

[0593] Further, it is noted that the concept 1080 can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein.

[0594] Furthermore, it should be noted that Figure 11 The concept 1080 can optionally be supplemented by any of the features, functionalities and details disclosed herein, alone and in combination.

[0595] 11. According to Figure 12 The interval size determines the kernel

[0596] Figure 12 A schematic block diagram of an interval size determination core 1100 according to an embodiment of the application is shown.

[0597] The interval size determination core receives a plurality of (typically, updated) state variable values 1110 and provides interval size information 1120 based on the plurality of state variable values. Generally, the interval size determination core 1100 is configured to derive interval size information for arithmetic coding of one or more symbols to be encoded (or, for arithmetic decoding of one or more symbol values to be decoded) based on a plurality of state variable values 1110 representing statistics of a plurality of previously encoded (or, previously decoded) symbol values having different adaptation time constants. The interval size determination core 1100 comprises a combination / combiner 1130 configured to derive a combined state variable value 1132 based on the plurality of state variable values 1110. Optionally, the interval size determination core 1100 comprises a scaling and / or rounding 1140 that scales and / or rounds the combined state variable value 1132 to obtain a scaled and / or rounded combined state variable value 1142. Furthermore, the interval size determination core 1100 comprises a lookup table based mapping 1150 configured to map the combined state variable value 1132 or a scaled and / or rounded version 1142 thereof using a lookup table in order to obtain interval size information describing an interval size (e.g., a size of an interval associated with a particular symbol, e.g., as a lower significant symbol or as a higher significant symbol) for arithmetic coding / decoding. However, optionally, a post-processing 1160 can be used to derive the interval size information 1120 based on a result 1152 of the lookup table based mapping 1150.

[0598] It should be noted that the interval size determination core 1100 can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein. Furthermore, it should be noted that the interval size determination core 11 can optionally be supplemented by any of the features, functionalities and details disclosed herein.

[0599] 12. According to Figure 13 State variable update

[0600] Figure 13A schematic block diagram illustrating a state variable update according to embodiments of the application is shown. The state variable update 1200 (which can also be seen as a state variable updater) is configured to receive a symbol value 1210, which can be a symbol value of a symbol to be encoded or a symbol value of a previously decoded symbol (or, alternatively, a symbol value of a previously encoded symbol). Further, the state variable update 1200 can be configured to receive one or more previously determined state variable values 1212 and to provide one or more updated state variable values 1220. In particular, the state variable update 1200 can be configured to update a first state variable value depending on the symbol value (e.g., representing a symbol to be encoded or a previously encoded symbol or a previously decoded symbol) and using a lookup table. In other words, the state variable update 1210 can comprise a lookup table based state variable update or a lookup table based state variable updater 1230. Thus, the updated state variable value can be provided based on the corresponding previously determined state variable value and taking into account the symbol value, which is based on a symbol to be encoded or based on a previously encoded symbol or based on a previously decoded symbol.

[0601] Thus, the state variable update 1200 can provide one or more updated state variable values. If multiple updated state variable values are to be determined, the lookup table based state variable update can be performed individually for each state variable value (however, wherein the same mechanism and / or the same lookup table can be used, which can have different scaling parameters and / or quantization functionalities).

[0602] However, the state variable update 1200 described herein can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein. However, it should be noted that the state variable update 1200 can optionally be supplemented by any of the features, functionalities and details disclosed herein, individually and in combination.

[0603] 13. According to Figure 8 The interval size determines the kernel

[0604] 14. Interval size determination kernel A schematic block diagram illustrating an interval size determination kernel 1300 according to embodiments of the application is shown.

[0605] The interval size determination kernel receives one or more state variable values 1310, which can be, for example, updated state variable values. Further, the interval size determination kernel provides an interval size value 1320 based on the one or more state variable values 1310.

[0606] The interval size determination kernel comprises a lookup table evaluation mechanism 1330, which receives a probability index 1332, which can be based on the one or more state variable values 1310, and which provides the interval size value 1320.

[0607] For example, the probability index derivation 1340 (which can comprise scaling and / or rounding and / or quantization) can be used to derive the probability index 1332 from the one or more (updated) state variable values.

[0608] For example, the one or more updated state variable values 1310 can be determined in an arithmetic encoder or an arithmetic decoder as disclosed herein, and can represent statistics of a plurality of previously encoded symbol values.

[0609] Generally, the interval size determination kernel 1300 is configured to determine the interval size value 1320 using a base lookup table 1350. The lookup table evaluation mechanism can be configured to determine the interval size value 1320 such that, if the probability index 1332 obtained based on the one or more state variable values is in a first range, the determined interval size value is identical to an element of the base lookup table 1350 or a rounded version of an element of the base lookup table 1350, and such that, if the probability index 1332 is in a second range, the determined interval size value is obtained using a scaling 1360 (and optionally a rounding) of an element of the base lookup table 1350. Thus, the interval size value 1320 can be used to perform arithmetic encoding or arithmetic decoding of one or more symbols.

[0610] In other words, the probability index 1332, which can be derived from the one or more (updated) state variable values (first signal processing path 880 or second signal processing path 890, in combination with the optional determination 840 and quantization 850) as shown, for example, in FIG. 8, can be used to decide whether to use an entry of the base lookup table “as is” or by scaling 1360 (which can be determined by the probability index 1332). Figure 14

[0611] In other words, the probability index 1332 can decide which element of the base lookup table 1350 to select (as indicated in a schematic manner at reference sign 1370), and can decide whether to perform scaling of that selected entry of the base lookup table 1350 (as symbolically shown at reference sign 1380). For example, the selection 1370 of an entry of the base lookup table can be determined by one or more least significant bits of the probability index 1332, and the decision whether to perform scaling 1360 can be made based on one or more most significant bits of the probability index 1332. However, rather than evaluating a group of bits, the selection of an entry of the base lookup table 1350 can be determined by a division residue of a division of the probability index 1332 by a predetermined value, and the decision whether to perform scaling 1360 can be made depending on a determination of which range of a plurality of ranges the currently considered probability index value lies in.

[0612] ​Furthermore, it should be noted that, optionally, the encoding interval size information (e.g., R) can be taken into account when selecting an entry of the basic lookup table 1350 (e.g., if the basic lookup table is a two-dimensional table). In another optional alternative, the encoding interval size information (e.g., R) can be used to determine whether additional scaling (e.g., applied to the selected entry of the basic lookup table) that depends on the encoding interval size information should be performed in order to obtain the interval size value 1320.

[0613] However, it should be noted that the interval sizing core 1300 described herein may be used in any of the arithmetic encoders and arithmetic decoders disclosed herein to derive interval size values.

[0614] Furthermore, it should be noted that the interval sizing core 1300 can optionally be supplemented by any of the features, functionalities, and details disclosed herein.

[0615] Figure 14

[0616] Figure 15 A schematic block diagram of an interval sizing core 1400 according to an embodiment of the present invention is shown.

[0617] The interval sizing core 1400 receives one or more state variable values ​​1410 , which may be, for example, updated state variable values, and provides an interval size value 1420 based on the one or more state variable values ​​1410 .

[0618] The interval sizing core 1400 includes a lookup table evaluation mechanism 1430 that receives a probability index 1432 , which may be based on one or more state variable values ​​1410 , and provides interval size information or an interval size value 1420 .

[0619] For example, probability index derivation 1440 may be used to derive probability index 1432 based on one or more (updated) state variable values.

[0620] For example, the one or more updated state variable values ​​1410 may be determined in an arithmetic encoder or an arithmetic decoder as disclosed herein and may represent statistics of a plurality of previously encoded symbol values ​​and / or a plurality of previously decoded symbol values.

[0621] In general, the interval size determination core 1400 is configured to determine an interval size value 1420 using a probability table (e.g., ProbTabLPS) based on a probability value (e.g., probability index 1432) derived from one or more state variable values 1410 and based on an encoding interval size (e.g., described by encoding interval size information 1412). For example, the probability table 1450 describes, for a set of multiple different probability values (or, probability indices 1432) and for a given encoding interval size (e.g., for a single given reference encoding interval size), an interval size. As Figure 15 As can be seen in the middle, the probability index 1432, for example, can be used to select which element of the probability table to apply as a basis for providing the interval size value 1420. In other words, the probability index 1432 determines the selection of an element of the probability table for further processing. Further, the probability index 1432 determines by which value the selected entry of the probability table is scaled in scaling 1460. In general, the interval size determination core can be configured to scale an element or entry of the probability table (e.g., selected depending on the current probability value or probability index 1432) in case the current probability value is not one of a set of multiple probability values and / or in case the current encoding interval size is different from a given (reference) encoding interval size. In other words, the interval size value 1420 can be derived from the selected entry of the probability table 1450 using scaling 1460, wherein the scaling can depend on both the probability value or probability index 1432 and the encoding interval size information 1412.

[0622] For example, an entry of the probability table 1450 can be associated with a single coding interval size and with a given range of probability values or probability indices (where the range can typically cover three or even more different probability values or probability indices, with the number of entries of the probability table preferably being a power of two for facilitating computational operations). If the coding interval size 1412 is different from the reference coding interval size associated with the entry of the probability table 1450, then the scaling 1460 can scale the selected entry of the probability table 1460, for example. In other words, if the actual coding interval size 1412 is different from the reference coding interval size (e.g., the coding interval size associated with the entry of the probability table 1450), then the scaling 1460 can take this deviation into account (at least if the deviation between the reference coding interval size and the actual coding interval size 1410 exceeds the size of the quantization interval used to quantize the coding interval size). Moreover, the scaling 1460 can also take into account whether the probability value or probability index 1432 is outside the range of probability values or probability indices associated with the entry of the probability table 1450. For example, if the entry of the probability table 1450 is associated with a first range of probability indices but the actual probability index 1432 is within a second range of indices that does not overlap with the first range of probability indices, then the scaling 1460 can take this finding into account and apply an additional scaling (in addition to the scaling based on the deviation of the actual coding interval size from the reference coding interval size).

[0623] In summary, if the probability value or probability index 1432 is within the set of multiple probability values for which the entry of the probability table is provided, and if the actual coding interval size 1412 is equal to the reference coding interval size (or is quantized to a value that is equal to the reference coding interval size), then the interval size determination core 1400 can provide the selected entry of the probability table 1450 as the interval size value 1420. On the other hand, if the probability value or probability index 1432 is outside the set of multiple probability values for which the entry of the probability table is provided, and / or if the actual coding interval size 1412 deviates from the reference coding interval size (e.g., by being quantized to a different value), then the scaling 1460 scales the selected entry of the probability table 1450 in order to obtain the interval size value 1420.

[0624] Thus, the interval size value 1420 can be obtained using a relatively small lookup table 1450, which can be a one-dimensional probability table, for example, with the number of entries of the one-dimensional probability table being less than the number of different possible probability value or probability index values (e.g., at least a factor of two).

[0625] It should be noted, however, that the interval size determination core 1400 can optionally be supplemented by any of the features, functionalities, and details described herein. Moreover, it should be noted that the interval size determination core 1400 can optionally be used in any of the arithmetic encoders or arithmetic decoders disclosed herein, and also in any of the video encoders or video decoders disclosed herein.

[0626] 15. According to Figure 16 The interval size determines the kernel

[0627] Figure 16 A schematic block diagram illustrating an interval size determination core 1500 according to an embodiment of the present application is shown.

[0628] The interval size determination core 1500 is configured to receive one or more state variable values, which can be, for example, updated state variable values. For example, the one or more state variable values 1510 can comprise a combined state variable value. Moreover, the interval size determination core 1500 is configured to provide an interval size value 1520, which can be, for example, a sub-interval width value, e.g., R LPS .

[0629] The interval size determination kernel 1500 comprises an optional mapping and / or rounding for determining a state variable value that represents a statistic of a plurality of previously processed (e.g., previously encoded or previously decoded) symbol values. Generally, the arithmetic encoder is configured to calculate a sub-interval width value (e.g., an interval size value 1520) from a combined state variable value (e.g., from an updated combined state variable value 1510) or from a scaled and / or rounded version thereof for arithmetically encoding or arithmetically decoding a symbol value to be encoded or to be decoded. The interval size determination kernel 1500 comprises, for example, a one-dimensional look-up table 1550 for mapping a state variable value (e.g., a combined state variable value) or a scaled and / or rounded version thereof onto a probability value. For example, the entries of the one-dimensional look-up table 1550 comprise probability values for different value intervals of a value range of a combined state variable value. Further, the interval size determination kernel comprises a quantization 1560 configured to quantize encoding interval size information 1512 describing a size of an encoding interval of an arithmetic encoding (e.g., prior to the arithmetic encoding of a symbol value to be encoded) or an arithmetic decoding (e.g., prior to the arithmetic decoding of a symbol value to be decoded) onto a quantization level. Thus, quantized encoding interval size information 1562 is provided. Further, there is a scaling / multiplication 1570 determining a product between a probability value and a quantization level (or, more precisely, the quantized encoding interval size information 1562) (e.g., using a look-up of pre-computed products or using a multiplication). For example, the probability value is provided by selecting an entry of the one-dimensional look-up table 1550 depending on a state variable value or a scaled and / or rounded version thereof. This probability value 1552 can then be scaled depending on the (quantized) encoding interval size information 1562 (i.e., depending on the "quantization level"), wherein the scaling can correspond to a determination of a product between a probability value and a quantization level. Thus, the interval size value 1520 is provided in an efficient way, wherein it is sufficient to use a one-dimensional look-up table.

[0630] However, it should be noted that the interval size determination kernel 1500 described herein can optionally be supplemented by any of the features, functionalities and details described herein, individually and in combination. Further, it should be noted that the interval size determination kernel 1500 can now be used in any of the arithmetic encoders and arithmetic decoders described herein, but also in any of the video encoders and video decoders described herein.

[0631] 16. According to Figure 1 Video decoder

[0632] Figure 17 A schematic block diagram of a video decoder 1600 according to an embodiment of the present application is shown.

[0633] The video decoder 1600 is configured to receive encoded video information and to provide decoded video information (or, decoded video content) based on the encoded video information.

[0634] The encoded video information 1610 (which can be considered as a video bitstream) can comprise, for example, slice type information and can also comprise an encoded representation of a binary sequence. Optionally, the encoded video information 1610 can comprise additional information, however, the additional information is not essential to the present application.

[0635] Generally, the video decoder is configured to decode a plurality of video frames (e.g., a sequence of video frames) and the video decoder can be configured to decode, for example, a video frame that is subdivided into one or more slices (preferably, into a plurality of slices). The video decoder can be configured to evaluate slice type information (which is comprised in the encoded video information 1610) to select a mode of operation for decoding a slice (which can be performed by the "video reconstruction" block 1680), wherein the slice type information indicates whether an independent coding mode is used or a single predictive mode is used or a bi-predictive mode is used for encoding the slice, in the independent coding mode, there is no prediction of video content of a current frame based on video content of a previous frame, in the single predictive mode, there is a prediction of a block of pixels based on one block of pixels of a previous frame, in the bi-predictive mode, there is a prediction of a block of pixels based on two or more blocks of pixels of one or more previous frames.

[0636] The video decoder 1600 comprises an arithmetic decoder 1620 which is configured to provide a decoded binary sequence 1622 (for use by the "video reconstruction" block) based on an encoded representation of a binary sequence which is comprised in the encoded video information 1610. The arithmetic decoder preferably comprises a first source static value determination 1630 and a second source statistical value determination 1640. Thus, the arithmetic decoder 1620 is configured to determine a first source statistical value 1632 (e.g., a first state variable value) using a first window size (or, using a first time constant) (wherein, for example, a state variable update as described herein can be used) and to determine a second source statistical value 1642 (e.g., a second state variable value) using a second window size (or, using a second time constant) (wherein, for example, a state variable update as described herein can be used). The arithmetic decoder optionally also comprises a combiner 1650. Thus, the arithmetic decoder can be configured to determine a combined source statistical value 1652 (e.g., a combined state variable value) based on the first source static value and based on the second source statistical value.

[0637] Further, the arithmetic decoder 1620 preferably includes a range value determination 1660 (e.g., can include any of the interval size determination kernels described herein or interval size determinations as described herein). Thus, the arithmetic decoder can be configured to determine one or more range values (or, interval size information as described herein) for interval subdivision based on the combined source statistic value 1652 (or, based on the first statistic value and the second source statistic value) that is used to map the encoded representation of the binary sequence (included in the encoded video information 1610) onto the decoded binary sequence 1622 (used by the video reconstruction block 1680).

[0638] Preferably, the arithmetic decoder 1620 also includes an arithmetic decoding kernel 1670 (e.g., can be a block or unit) that receives the one or more range values 1662 from the range value determination 1660 and that uses these range values to derive the decoded binary sequence 1622 from the encoded binary sequence included in the encoded video information 1610.

[0639] Further, the video decoder can include, for example, a video reconstruction block (or, unit) 1680 that receives the decoded binary sequence 1622 and provides decoded video content 1612 based on the decoded binary sequence 1622 (possibly taking into account additional control information such as slice type information).

[0640] In summary, the arithmetic decoder 1600 receives the encoded video information 1610 and performs arithmetic decoding of the encoded representation of the binary sequence to derive the decoded binary sequence 1622. The arithmetic decoding utilizes knowledge about probabilities of binary values in the decoded binary sequence 1622. The arithmetic decoding kernel 1670 takes this knowledge about probabilities (or, estimated probabilities) of binary values within the decoded binary sequence 1622 into account by relying on the range values 1662 that define the interval subdivision. In short, the arithmetic decoding kernel can use the range values 1662 to define different intervals (e.g., between 0 and 1, or within a range of a series of integer values). For example, the arithmetic decoding kernel can interpret the encoded representation of the binary sequence as a representation of a number that lies in one of the intervals defined using the range values. By identifying in which one of the intervals the number represented by the encoded representation of the binary sequence lies, the arithmetic decoding kernel 1670 can infer which bit or which sequence of bits has been encoded using the encoded representation of the binary sequence.

[0641] However, it should be noted that this explanation of the arithmetic decoding core 1670 should be considered only as a very brief and general explanation. Details regarding the arithmetic decoding core can be found, for example, in the standards H.264 and H.265. However, different concepts (for the operation of the arithmetic decoding core) can also be seen from this document, and the details of the arithmetic decoding core are not particularly relevant to the present invention.

[0642] However, in order to obtain a suitable range value (allowing for high bit rate efficiency), the arithmetic decoder 1620 (or, in general, the video decoder) uses different window sizes to determine the two source statistics 1632, 1642 (wherein the "window size" defines the degree of smoothing across the plurality of decoded binary values ​​of the decoded binary sequence 1622). Furthermore, in order to increase the reliability of the range value provided to the arithmetic decoding core 1670, the first source statistic 1632 and the second source statistic 1642 are combined into a combined source statistic 1652 in some embodiments.

[0643] Thus, it can be said that the video decoder 1600 provides high efficiency because the range values ​​used by the arithmetic decoding core 1670 are well adapted to the actual probabilities of bit values ​​(e.g., bit values ​​"0" and "1" within the decoded binary sequence 1622).

[0644] As an additional note, it should be noted that the video decoder 1600 can also be modified. In an alternative implementation, the second source statistic determination 1640 can be replaced by a provided fixed value (which can be independent of the decoded binary sequence, but can depend on one or more parameters). In this case, the arithmetic decoder is optionally configured to combine the first source statistic 1632 with a fixed non-zero value to obtain a combined source statistic 1652. It has been found that such a simplification can lead to good results in some cases and, for example, can avoid unduly strong variations in the combined source statistic. In other words, by introducing a fixed contribution into the determination of the combined source statistic, it can be achieved that the combined source statistic no longer deviates significantly from the fixed value. Therefore, if a long sequence of identical bit values ​​occasionally exists within the decoded binary sequence 1622, some "hindsight" in the statistics of the decoded binary sequence can be used to avoid a significant degradation in coding efficiency.

[0645] As an additional note, it should be noted that the functionality of the arithmetic decoder (and the various blocks of the arithmetic decoder) can generally also be considered as the functionality of the entire video decoder. In other words, the functionality described herein as the functionality of the arithmetic decoder can also be performed by other blocks of the video decoder.

[0646] In addition, it should be noted that according to Figure 17The video decoder 1600 can be supplemented by any of the features, functionalities and details described herein, alone and in combination.

[0647] 17. According to Figure 17 Video decoder

[0648] Figures 4 to 15 A schematic block diagram of a video decoder 1700 according to an embodiment of the present application is shown.

[0649] The video decoder 1700 is configured to receive encoded video information 1710 (e.g. a video bitstream) and to provide decoded video content 1712 (e.g. a sequence of video frames) based on the encoded video information. The encoded video information 1710 may, for example, comprise slice type information as described herein. The encoded video information 1710 can further comprise configuration information, which can also be regarded as control information. Moreover, the encoded video information 1710 can comprise an encoded representation of a binary sequence.

[0650] In 18. Further embodiments The two main blocks of the video decoder 1700, namely the arithmetic decoder 1720 and the video reconstruction 1780, are shown. However, it should be noted that the distribution of the functionality of the video decoder is not bound to a fixed block structure, but can also be modified in a wide range. Also, it should be noted that an actual implementation of the video decoder can have additional blocks and / or functionalities well-known to the person skilled in the art.

[0651] The arithmetic decoder 1720 receives the encoded representation 1711 of a binary sequence. However, the arithmetic decoder (or, a control block outside the arithmetic decoder) can optionally receive slice type information and configuration information (or, control information). Specifically, the arithmetic decoder 1720 provides a decoded binary sequence 1722 to the video reconstruction 1780 based on the encoded representation 1711 of a binary sequence, optionally taking into account some or all of the slice type information and the configuration information or control information.

[0652] In the following, the functionality of the arithmetic decoder 1720 will be described in more detail. The arithmetic decoder comprises an arithmetic decoding core 1770 which receives the encoded representation 1711 of a binary sequence and provides a decoded binary sequence 1722. The arithmetic decoding core determines which bit values of the decoded binary sequence 1722 are represented by the encoded representation 1711 of a binary sequence. For this purpose, the arithmetic decoding core 1770 checks in which interval of a plurality of intervals a number represented by the encoded representation 1711 of a binary sequence lies. Depending on the decision in which interval of a plurality (at least two) of intervals a number represented by the encoded representation 1711 of a binary sequence lies, a certain bit value or group of bit values or symbol of the decoded binary sequence 1722 is identified.

[0653] For the purpose of deriving the decoded binary sequence 1722, the arithmetic decoding core receives information about the intervals, which generally corresponds to some degree of probability of the bit value. In the present case, the arithmetic decoding core 1770 receives "range values" or "interval size information" 1762 for the interval subdivision (i.e., the range values ​​1762 of the intervals for defining the range of numbers to be used by the arithmetic decoding core 1770). In particular, it should be noted that the arithmetic decoding core 1770 can be similar to or identical to the arithmetic decoding core used in a video encoder / decoder according to the H.264 standard or in a video encoder / decoder according to the H.265 standard, for example. However, it should be noted that different methods for implementing the arithmetic decoding core 1770 can also be used.

[0654] In view of the above discussion, it is obvious that one important functionality of the arithmetic decoder 1720 is to provide range values ​​or interval size information 1762 defining the interval subdivision for the arithmetic decoding core 1770. In general, the arithmetic decoder 1720 derives these range values ​​1762 from previously decoded binary values ​​of the decoded binary sequence 1722, optionally taking into account some control information defining parameters such as initialization values, "window size", "window size adjustment", etc.

[0655] In the arithmetic decoder 1700, two source statistics determination blocks (or, units) 1730, 1740 are used (e.g., which may correspond to the state variable updates described herein). For example, the first source statistics determination block 1730 receives one or more previously decoded binary values ​​(or, symbol values) of the decoded binary sequence 1722 (also in the form of x t The first source statistic determination block may receive, for example, some configuration information (such as a constant or variable BITS 1732 ) and provide a first source statistic value 1732 (which may correspond to the first state variable value described herein) based on the one or more previously decoded binary values. a ), which defines the number of bits used to represent the source statistic 1732, and the constant or variable n a , which defines the "window size" to be used by the source statistics determination block 1730, and / or any other parameters described herein. For example, the first source statistics determination block 1730 may recursively determine the first source statistics 1732, where the window size n a or parameter n i k The weighting of the most recently decoded binary value of the decoded binary sequence 1722 is determined in the determination of the first source statistic or first state variable value 1732 .

[0656] For example, the functionality of the first source statistic value determination block 1730 is similar to the formation of a sliding average with a certain window size, except for the fact that a recursive algorithm is used which introduces some "infinite impulse response" characteristics. Thus, the first source statistic value 1732 does not exactly represent the result of a sliding window summing operation or a sliding window averaging operation, but should rather be considered as a "virtual sliding window" operation, since the result is very similar.

[0657] Furthermore, the second source static value determination block 1740 performs similar operations when compared to the first source static value determination block 1730. However, the second source statistic value determination block 1740 typically uses different parameters (e.g., a different window length n b and / or a different bit number parameter BITS b or a different parameter n i k ), and thus provides a second source statistic value or second state variable value 1742, which is typically different from the first source statistic value or first state variable value 1732. For example, one of the source statistic values 1732, 1742 can be a short-term (or, shorter-term) average source statistic value, and one of the source statistic values 1732, 1742 can be a long-term (or, longer-term) average source statistic value.

[0658] It should be noted that the source statistic value determination blocks 1730, 1740 may, for example, perform functionality as explained for the state variable update herein. Furthermore, it should be noted that in some embodiments, also different calculation rules can be used in the source statistic value determination blocks 1730, 1740.

[0659] The arithmetic decoder 1720 optionally further comprises a combined source statistic value determination block (or, unit) 250, which is configured to receive the first source statistic value 1732 and the second source statistic value 1742. The source statistic value combination block 1750 provides a combined source statistic value 1752 based on the first source statistic value and the second source statistic value. For example, the source statistic value combination block 1750 can form a sum or average of the first source statistic value 1732 and a sum or average of the second source statistic value 1742, thereby obtaining the combined source statistic value 1752.

[0660] However, in deriving the combined source statistic value 1752, the source statistic value combination block 1750 can also apply different weightings to the first source statistic value 1732 and the second source statistic value 1742, wherein the different weightings can even vary within a slice or between different slices.

[0661] For example, the source statistic value combination block 1750 can perform the functionality of the combination 751 or the combination 892. However, variations of this functionality are also possible.

[0662] For example, in one (alternative) embodiment, the source statistic value combination block 1750 combines only one of the first statistic values with a fixed value, thereby obtaining a combined source statistic value or a combined state variable value 1752. Such a concept can be advantageous to avoid that the combined source statistic value 1752 deviates too much from the expected probability of a binary value within the decoded binary sequence 1722.

[0663] The arithmetic decoder 1720 is configured to derive a range value 1762 for interval subdivision (to be provided to the arithmetic decoding core 1770) based on the combined source statistic value or the combined stat...

Claims

1. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24''; 410) having symbol values, in, The arithmetic encoder is configured to be based on a plurality of state variable values ​​(s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742) to derive interval size information (p) for arithmetic coding of one or more symbol values ​​to be encoded k , ;432; 534; 620; 720; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), wherein the plurality of state variable values ​​represent statistics of a plurality of previously encoded symbol values ​​having different adaptation time constants, The arithmetic encoder is configured to be based on the multiple state variable values ​​(s i k ) to derive the combined state variable value (s k ; 751a; 893; 1132), and The arithmetic encoder is configured to use a lookup table to map the combined state variable value (s k ) or its scaled and / or rounded versions ( ; 753) in order to obtain said interval size information describing an interval size for said arithmetic coding of one or more symbols to be encoded, wherein the arithmetic encoder is configured to change the value of the state variable in a first direction if the symbol to be encoded takes a first value, and to change the value of the state variable in a second direction if the symbol to be encoded takes a second value different from the first value, and The arithmetic encoder is configured to determine an entry of the lookup table to be evaluated based on an absolute value of the combined state variable value.

2. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24''; 520; 1622; 1722) having symbol values, in, The arithmetic decoder is configured to calculate the value of a plurality of state variables (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742) to derive interval size information (p) for arithmetic decoding of one or more symbol values ​​to be decoded k , ;432; 534; 620; 720; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), wherein the plurality of state variable values ​​represent statistics of a plurality of previously decoded symbol values ​​having different adaptation time constants, The arithmetic decoder is configured to be based on the multiple state variable values ​​(s i k ) to derive the combined state variable value (s k ),as well as The arithmetic decoder is configured to use a lookup table to map the combined state variable value (s k ) or its scaled and / or rounded versions ( ) in order to obtain said bin size information describing a bin size for said arithmetic decoding of one or more symbols to be decoded, wherein the arithmetic decoder is configured to change the value of the state variable in a first direction if the decoded symbol takes a first value, and to change the value of the state variable in a second direction if the decoded symbol takes a second value different from the first value, and The arithmetic decoder is configured to determine the entry of the lookup table to be evaluated based on the absolute value of the combined state variable value.

Citation Information

Patent Citations

  • Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an optimized hash table

    CN103119646A