Arithmetic encoder, arithmetic decoder, encoder, decoder, encoding method, decoding method, and computer readable medium
By using lookup table mapping and weighted summation, the balance between computational efficiency and reliability in arithmetic coding is solved, achieving efficient symbol encoding and decoding.
Patent Information
- Application Number
- CN202511374611.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2019-07-05
- Publication Date
- 2025-12-09
AI Technical Summary
Existing arithmetic coding techniques struggle to achieve a good balance between computational efficiency and reliability when dealing with changes in symbol probability, especially in terms of excessive resource requirements for interval subdivision and determination of probability information.
A lookup table-based mapping mechanism is adopted, which uses two state variable values to derive the 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 storage requirements.
It achieves efficient coding that considers symbol probability changes at different time scales, reducing computational complexity and resource requirements while maintaining coding efficiency and reliability.
Smart Images

Figure CN121098332A_ABST
Abstract
Description
[0001] This application is a divisional application of PCT Patent Application No. 201980058433.3, filed on July 5, 2019, with the International Bureau, and entered into the Chinese National Phase on March 5, 2021, having the title “Arithmetic Encoder, Arithmetic Decoder, Video Encoder, Video Decoder, Encoding Method, Decoding Method, and Computer Program”. TECHNICAL FIELD
[0002] An arithmetic encoder is created according to embodiments of the present application.
[0003] An arithmetic decoder is created according to further embodiments of the present application.
[0004] A video encoder is created according to further embodiments of the present application.
[0005] A video decoder is created according to further embodiments of the present application.
[0006] A method for encoding a plurality of symbols and a method for decoding a plurality of symbols are created according to further embodiments of the present application.
[0007] A corresponding computer program is created according to further embodiments of the present application.
[0008] Generally, the embodiments according to the present application use a finite state machine to create a context model update method. BACKGROUND
[0009] Arithmetic encoding and decoding proved to be valuable tools 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 application 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. Specifically, 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.
[0010] 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.
[0011] In order to adapt to the probabilities of “0” and “1” (or, generally, to the probabilities of symbols to be encoded), a concept is typically used to adjust the boundaries of intervals within the total (current) range of values to obtain 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).
[0012] In other words, information about probabilities of different symbols (such as "0" and "1") is used to derive interval size information (or equivalently, interval size values) that describe the width of intervals associated with the symbols (where the total interval width can change over time, e.g., due to interval renormalization, depending on the encoding or decoding process).
[0013] Therefore, there is a need for a concept for determining source statistic values (e.g., state variable values) and / or range values (such as interval size values) for interval subdivision (e.g., for subdivision of a total encoding interval) that provides a good balance between computational efficiency and reliability. SUMMARY
[0014] 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 (e.g., p k or R*p k ) describing an interval size for arithmetic encoding of one or more symbols to be encoded.
[0015] The embodiment according to the present application is based on the idea that interval size information can be obtained with especially good reliability if a mapping based on a lookup table is applied to state variable values associated with different adaptation time constants. In other words, by applying the same lookup table to two state variable values describing statistics over different time scales (e.g. symbol probabilities), interval size information can be obtained in an efficient way (as only one lookup table is needed) but with good reliability (as statistics over different time scales are considered when determining the interval size information). The mapping of the state variable values using a lookup table can be seen as an important and direct step to derive 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 lookup 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 lookup 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 the result of the lookup table based mapping of the first state variable value and the result of the lookup table based mapping of the second state variable value are possible.
[0016] In summary, the embodiment according to the present application provides for deriving interval size information based on a first state variable value and a second state variable value using at least two lookup table based mappings. Thus, state variable values associated with different adaptation time constants can be mapped individually but using the same mapping rule (defined by the lookup table), which makes the resource requirements for determining the interval size information rather small but still allows to consider (e.g. to weight) statistics (or statistical information thereon) of a plurality of previously processed (e.g. encoded or decoded) symbols obtained by different adaptation time constants or statistical computation time constants.
[0017] 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 lookup 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 (pk 2 ) using a lookup 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).
[0018] Using such a concept, a combined probability value describing a probability of a symbol (e.g., a probability of the symbol "1" or a probability of the symbol "0") can be derived based on the first state variable value and based on the second state variable value more easily. For example, a first state variable value after a symbol of a previous processing (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 processing (e.g., encoding or decoding) with a second flexibility can be effectively mapped onto a second probability value. Thus, a trend of the symbols of the previous processing 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 the symbols of the previous processing with different adaptation time constants, and the mapping of the state variable values onto the "partial" probability values (the first probability value and the second probability value) contributing to the combined probability value can be performed in a very resource-efficient way using the concepts described above.
[0019] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value into 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 into 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 values and negative values), wherein the arithmetic encoder is configured to select an entry of the look-up table depending on an 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 an entry of the look-up table to be evaluated.
[0020] By using state variable values that can take negative values and positive values (e.g., depending on a history of previously processed symbols, and e.g., in a symmetric way for opposite previously processed symbols), and by selecting an entry of the look-up table depending on an absolute value of the respective state variable value, the efficiency of the concept can be improved even more. 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. Rather, an entry of the look-up table can be used for both 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 interval size information for opposite previously processed symbols can be exploited.
[0021] 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., to ).
[0022] Using such a mechanism, the number of entries of the look-up table can remain small (e.g., because the entries of the look-up table are selected based on the absolute values of the respective state variable values only), while still obtaining “complementary” probability values for the opposite signs of the respective state variable values. Thus, a high degree of resource efficiency and low computational complexity is achieved for determining the probability values.
[0023] In a preferred embodiment, the arithmetic encoder is configured to determine the two or more probability values p k i :
[0024]
[0025] wherein LUT1 is a look-up 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 adapts the numerical range of the i-th state variable value to the number of entries of the look-up table).
[0026] It has been found that such a computation is computationally efficient and keeps the resource requirements rather small.
[0027] In a preferred embodiment, the arithmetic encoder is configured to determine the two or more probability values p k i :
[0028]
[0029] wherein LUT1 is a look-up 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 iis a weighting value associated with the i-th state variable value (e.g., a weighting value that scales the numerical range of the i-th state variable value to the number of entries of the lookup table).
[0030] 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 operands, regardless of the sign of the state variable value. In particular, it is not necessary to remove the sign of the operands 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 leads to a particularly low complexity.
[0031] In a preferred embodiment, the arithmetic encoder is configured to derive the plurality of probability values p k i obtaining a combined probability value p k :
[0032]
[0033] where N is the number of probability values under consideration (and can be equal to the number of state variable values under consideration); and where 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) (where b k i is preferably an integer power of 2, and where the ratio between two different b k i is preferably an integer power of 2).
[0034] 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.
[0035] In a preferred embodiment, the arithmetic encoder is configured to map the first state variable value or a scaled and / or rounded version thereof to a first sub-interval width value (R*p k 1) using a two-dimensional lookup table whose entries are addressed (e.g., second lookup table entry coordinates are determined) depending on the first state variable value (e.g., first lookup table entry coordinates are determined using the probability index i, for example) and on the coding interval size information (e.g., R, or an index j derived from R) that describes the size of the coding interval of the arithmetic coding before the encoding of the sign, wherein the arithmetic encoder is configured to map the second state variable value or a scaled and / or rounded version thereof mapping onto the second subinterval width value (R*p k 2 ) depending on the second state variable value (e.g. determining the first look-up table entry coordinate) and depending on the coding interval size information (e.g. R) describing the size of the coding interval of the arithmetic coding before the encoding of the symbol (e.g. determining the second look-up table entry coordinate), 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).
[0036] 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 respective state variable value (or a scaled and / or rounded version 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 respective state variable value and the coding interval size associated with the second table index. Thus, by spending some memory for the two-dimensional look-up table (which memory can be read-only memory in some cases), the execution of the multiplication operation can be saved which can be advantageous in terms of computational resources and in terms of energy consumption.
[0037] 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 the one-dimensional look-up table) and a second one-dimensional vector (Qr2(R)), the entries of the first one-dimensional vector comprising probability values of 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 |s k |·a k ) and the entries of the second one-dimensional vector comprising quantization levels for the coding interval size information.
[0038] 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 an appropriate element of the two-dimensional look-up table, the execution of the multiplication operation 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.
[0039] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table (RangTabLPS) are defined on the basis of the base look-up table (BaseTabLPS), wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or are a rounded version 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.
[0040] By using such a method, an approximate index increase or decay 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 group of elements of the two-dimensional look-up table are substantially (e.g., except for a deviation caused by rounding) scaled versions of the elements of the first group 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 be easily used to obtain the elements of the two-dimensional look-up table.
[0041] In a preferred embodiment of the arithmetic encoder, 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.
[0042] By using such a method, the elements of the two-dimensional look-up table can be obtained in a particularly efficient manner, since the right-shift operation can be performed very easily. Moreover, the right-shift operation causes a proper scaling and also the rounding operation can be performed in a very efficient manner.
[0043] In a preferred embodiment of the arithmetic encoder, 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 ) using the quantization function Qp2(.)) 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 ) using the quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0044] By using such a concept, it can be distinguished depending on a probability index, which can be based on the individual state variable values for example, whether an element of the first group of elements or an element of the second group of elements should be used, for example. The probability index, which can be defined by the probability of the least likely symbol for example or by an integer index value, can be derived based on the individual state variable values using a mapping for example. For example, a first probability value obtained using a mapping of the first state variable value or a second probability value obtained using a mapping of the 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 group of elements of the two-dimensional look-up table or an element of the second group of elements of the two-dimensional look-up table should be evaluated).
[0045] And, using this concept, the individual elements of the two-dimensional look-up table can be determined based on a "basic look-up table in operation", the number of elements of which is smaller than the number of table elements, which can be addressed by the probability index and the coding interval size index.
[0046] In a preferred embodiment of the arithmetic coder, a division residue (i % μ) of a division between the probability index (i) and a 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 (which can be obtained based on the interval size information R; e.g. using a quantization operation Qr2(.) (e.g. j)) determines which element of the basic look-up table is used to obtain an element of the two-dimensional look-up table.
[0047] By using this concept, an appropriate element of the basic look-up table can be selected, although the extension of the basic look-up 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 a first size value (which can describe the extension of the basic look-up table in the first direction), an element of the basic look-up table can be used 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 basic look-up table can be used twice for two probability index values differing by the first size value. Thus, the evolution of the probability index values can be described generally with the two-dimensional look-up table, 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.
[0048] In a preferred embodiment, the arithmetic coder is configured to obtain an element of the two-dimensional look-up table (RangTabLPS) according to
[0049]
[0050] where BaseTabLPS is a base lookup 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-shift bit-shift operation, where y determines whether and by how many bits x is right-shifted.
[0051] By using such a method, the interval size information that can be defined by the result of the scaling function or scaling operation can be obtained in a memory-efficient manner, among others. For example, the "BaseTabLPS" lookup 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 can be described by the interval size information. Furthermore, the scaling function can be implemented in an especially efficient manner, 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 smaller than 2, then 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 predetermined values or even just using a shift operation.
[0052] In a preferred embodiment of the arithmetic coder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), where the probability table describes a set of a plurality of probability values (e.g., represented by the index i) and an interval size for a given (reference) coding interval size, and where scaling is used to derive the elements of the two-dimensional lookup table for probability values not in the set of a plurality of probability values and / or for coding interval sizes different from the given coding interval size from the probability table.
[0053] Using such a method, the different interval sizes can be related to each other by scaling quite often, depending on the difference between the associated probability values and / or depending on the difference between the associated coding interval sizes. In other words, if the two-dimensional look-up table does not comprise an element fitting the currently considered probability value and / or the currently considered coding interval size, a proper 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 coding interval size).
[0054] 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 the probability table depending on the coding interval size (R) (probTabLPS[i%μ]) and using a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (denoted by the index i) is comprised 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).
[0055] Thus, a proper entry of the probability table can be used "on the fly" and using a proper scaling to obtain the 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 the element of the two-dimensional look-up table, a proper element of the probability table is selected and scaled. However, in many cases, such a concept provides an improved balance between memory requirements and computational complexity.
[0056] In a preferred embodiment of the arithmetic encoder, the division of the probability index (e.g. i; e.g. representing the current probability value) by 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 of the probability index (i) by the first size value determines which element of the probability table is scaled in the first scaling. Determining the scaling factor used in the second scaling And / or the coding interval size determines the multiplicative scaling factor of the first scaling (Qr2(R)).
[0057] 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 coding interval size indices can be used, which can save memory space. The proper 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 secondary scaling of the selected element of the probability table.
[0058] 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:
[0059]
[0060] 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 currently coded 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 a right shift of x is performed and how many bits are right shifted.
[0061] By using such a concept for obtaining an appropriate element of a two-dimensional look-up table, which can represent the interval size information 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 a 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 integer value obtained by the "down-rounding" operator is scaled, 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.
[0062] In a preferred embodiment, the arithmetic coder is configured to obtain an element RangeTabLPS[i][j] of a two-dimensional look-up table according to
[0063]
[0064] 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 currently coded 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 downward 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 a right shift of x is performed and determines how many bits are right shifted.
[0065] This method for obtaining 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).
[0066] In a preferred embodiment of the arithmetic encoder, wherein the division between the probability index (e.g. i; e.g. representing a current probability value) and the first size value (e.g. μ; wherein the size value e.g. describes an extension of a 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 scaling factor used in the first scaling and / or wherein the encoded interval size (R) determines the multiplication scaling factor (Qr2(R)) of the second scaling.
[0067] By selecting an element of a probability table (which can be a one-dimensional probability table) depending on the above division residue, the fact that the interval size is substantially similar for different ranges of the probability index except for the scaling can be exploited. Thus, the probability table only reflects values in a single range of the probability index, and the 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 encoded interval size, in order to in turn obtain appropriate interval size information.
[0068] Thus, a good balance between memory consumption, computational complexity and accuracy can be obtained, wherein e.g. 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.
[0069] 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:
[0070]
[0071] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down 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 to perform a right shift of x and determines how many bits to shift to the right.
[0072] This calculation rule implements the previously mentioned concepts in a highly efficient manner.
[0073] In a preferred embodiment of this arithmetic encoder, the two-dimensional lookup table can be represented as a binary product of the following two: a first one-dimensional vector (forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include the values of a first state variable and the values of a second state variable or their scaled and / or rounded versions. The probability values of different value intervals in the range; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0074] Such a two-dimensional lookup table can be effectively used to derive interval size information based on state variable values and encoded interval size information. The lookup within the two-dimensional lookup table corresponds to the mapping from state variable values to probability values and also to the multiplication of the obtained probability value with the encoded interval size. Therefore, interval size information that can be equal to the selected entry of the two-dimensional lookup table can be easily obtained, where each element of the two-dimensional lookup table can be selected depending on the individual state variable values and the encoded interval size information (where the individual state variable values determine the first index of the element of the two-dimensional lookup table, and the encoded interval size information determines the second index).
[0075] In a preferred embodiment, the arithmetic encoder is configured to: base its operation on a first state variable value and a second state variable value, or a scaled and / or rounded version thereof. Calculate the width of the first subinterval and the width of the second subinterval (R*p) respectively. k The calculation is performed by using its entries, which include scaled and / or rounded versions of the first and second state variable values or their respective values. a one-dimensional look-up table (LUT4) of probability values for different value intervals of the value range of the first state variable value and the second state variable value (s k ) or scaled and / or rounded versions thereof onto the first probability value and the second probability value and quantizing an amount of coding interval size information (e.g. R) describing a size of the coding interval of the arithmetic coding before the coding of the symbol onto a quantization level; determining a product between, on the one hand, the first probability value and the second probability value and, on the other hand, the quantization level (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 to obtain a combined sub-interval width value (e.g. using a weighted sum or using a weighted average).
[0076] It has been found that using such a method also works very well in certain conditions. By deriving the first sub-interval width value based on the first state value only (without taking the second state value into account) and by calculating the second sub-interval 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 sub-interval width value and the second sub-interval width value are combined to obtain a combined sub-interval width value that brings high precision 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.
[0077] 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.
[0078] This concept is particularly easy to implement, since a logical right shift only requires minimal computational resources.
[0079] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the coding interval size information R by where u, v and w are parameters.
[0080] It has been found that such a quantization can also be very easy to implement. In particular, if the parameters u, v and w are chosen to be integer values (or, integer values greater than 1), the computational effort is minimal.
[0081] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional look-up 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 .
[0082] Using monotonically decreasing entries of a one-dimensional look-up table has been shown to bring good results for the interval size information.
[0083] In a preferred embodiment of this arithmetic decoder, the values of the first and second state variables, or their scaled and / or rounded versions, are used. The range of values has different intervals of equal size.
[0084] Using such equal-sized value ranges allows for simple quantification. Furthermore, the equal-sized value ranges allow for the determination of elements in the lookup table with a moderate amount of work during operations.
[0085] In a preferred embodiment of this arithmetic encoder, the values of the first and second state variables, or their scaled and / or rounded versions, are used. The range of values has different intervals of equal size.
[0086] Such a monotonic decrease in the number of entries using a one-dimensional lookup table can be represented with good accuracy as an exponential decay.
[0087] An arithmetic encoder for encoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to be based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The multiple state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic encoder is configured to base its calculations on the multiple (individual) state variable values (s). i k To derive the combined state variable values (s) k (For example, it could be a weighted sum of state variable values), and wherein the arithmetic encoder is configured to use a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) which describes the interval size for the arithmetic encoding of one or more symbols to be encoded. k or R*p k ).
[0088] This embodiment of the invention is based on the idea that determining interval size information is highly efficient if the combined state variable values are determined before using a lookup table to perform the mapping. Therefore, it is no longer necessary to use two (or more) state variable values to perform a separate lookup table lookup. Instead, a single table lookup is sufficient to determine the interval size information. Specifically, it has been found that the combination of the first and second state variable values before performing the lookup table lookup significantly degrades the quality of the interval size information in many situations.
[0089] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of state variable values in order to obtain combined state variable values.
[0090] It has been found that calculating the weighted sum of the state variable values is an efficient way to determine the combined state variable values, and it is also well-suited for considering the different correlations between the two state variable values caused by the different adaptive time constants used when deriving the state variable values.
[0091] In a preferred embodiment, the arithmetic encoder is configured to determine the rounding value. The sum of these values is used to obtain the combined state variable values (s). k This rounding value is obtained by rounding the value of the state variable. Associated weighted values The product is obtained by rounding.
[0092] It has been found that performing rounding of the scaling values before performing the summation yields particularly meaningful results. A negligible contribution from one of the state variable values is eliminated through rounding without affecting the combined state variable values. Therefore, highly reliable results can be obtained, and the combined state variable values are typically rounded numerically, with the integer value being well-suited as an index for selecting elements in the lookup table.
[0093] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value s according to the following formula. k :
[0094]
[0095] Among them, s k 2 represents the state variable values, where N is the number of state variable values considered.
[0096] in This is the round-down operator, where d k i It is a weighted value associated with the values of state variables (e.g., a weighting factor that controls the influence of individual state variable values on the combined state variable value) (where d k iPreferably, the ratio between the two different d k i Preferably, the ratio between the two different d k i Preferably, the ratio between the two different d
[0097] The concept for deriving a combined state variable value leads to very meaningful combined state variable values, as explained before.
[0098] 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. “0”) 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. “1”) different from the first value (e.g. such that the state variable value can take positive and negative values), and wherein the arithmetic encoder 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 (if s k i > 0, s k , else -s k (e.g. depending on the scaled and rounded version of the absolute value of the combined state variable value).
[0099] The concept for determining a state variable value (e.g. for determining a first state variable value and for determining a second state variable value) leads to the same advantages as in the case of using separate mappings for the first state variable value and the second state variable value.
[0100] 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 combined state variable value takes a first sign (e.g. the 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. 1) (e.g. to ) if the combined state variable value takes a second sign (e.g. the negative sign).
[0101] The concept for mapping a combined state variable value to a 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 combined state variable value and the negative version of the given (positive) combined state variable value. In other words, in the given concept, the absolute value of the combined state variable value determines which element of the look-up table is evaluated to provide the probability value.
[0102] However, setting the probability value depending on the sign 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 the predetermined value still takes the sign of the combined state variable value into account in an appropriate and efficient way. Thus, meaningful probability values can be obtained based on the combined state value with low computational complexity.
[0103] In a preferred embodiment, the arithmetic encoder is configured to determine the combined probability value p according to k :
[0104]
[0105] 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).
[0106] The concept of determining the combined probability value based on the combined state variable value s k realizes the idea outlined before in a computationally efficient way.
[0107] In a preferred embodiment, the arithmetic encoder is configured to determine the combined probability value p according to k :
[0108]
[0109] 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).
[0110] 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 be realized in some situations 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 represented in floating point. Thus, the concept discussed here can help to reduce complexity in some situations.
[0111] 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 a subinterval width value (R* p k ), the entries of the two-dimensional look-up table being 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 of the arithmetic encoding before encoding of the symbol.
[0112] 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 at run-time remains very low. In contrast, 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 subinterval 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.
[0113] 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 |s k |·a k ) and a second one-dimensional vector (Qr2(R)) whose entries comprise quantization levels for the coding interval size information.
[0114] 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.
[0115] 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 (BaseTabLPS), wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or are a rounded version 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 a scaled and rounded version of the elements of the base look-up table.
[0116] By defining the elements of the two-dimensional look-up table based on the base look-up table, the two-dimensional look-up table can be generated in a very simple way. Moreover, since the second group of elements of the two-dimensional look-up table are a scaled and rounded version of the elements of the base look-up table (while the elements of the first group of elements of the two-dimensional look-up table are identical to or are a rounded version of the elements of the base look-up table), the exponential progression 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 combined state variable value onto the interval size information can be reflected.
[0117] In a preferred embodiment of the arithmetic encoder, 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.
[0118] This allows a simple generation of the entries (elements) of the two-dimensional look-up table.
[0119] It has been found that right-shifted elements of a base look-up table are a very effective concept of combined scaling and rounding operations.
[0120] In a preferred embodiment of the arithmetic encoder, the probability index (Qp2(p LPS ) or i) determining whether to evaluate an element of the first group of elements of the two-dimensional look-up table or to evaluate an element of the second group of elements of the two-dimensional look-up table, 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 group 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, e.g., the quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0121] By using the probability index, the elements of the two-dimensional look-up table can be selected very efficiently, which probability index can be derived directly from the combination state variable values (without using probability values as intermediate quantities) or can be derived using combined probability values based on the combination state variable values. Moreover, the probability index is used for switching between elements of the first group of elements and elements of the second group of elements, which allows to determine the elements of the two-dimensional look-up table efficiently in operation.
[0122] In a preferred embodiment of the arithmetic encoder, 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 an interval size index (e.g., which can be obtained based on the interval size information R; e.g., using a quantization operation Qr2(.) (e.g., j)) determines which element of the base look-up table is used for obtaining an element of the two-dimensional look-up table.
[0123] In a preferred embodiment, the arithmetic encoder is configured to obtain an element of the two-dimensional look-up table (RangTabLPS) according to
[0124]
[0125] wherein BaseTabLPS is a base look-up table of size μ; 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).
[0126] By evaluating the division residue for determining which element of the base look-up table is used for obtaining an element of the two-dimensional look-up table, the elements of the two-dimensional look-up table can be determined in operation with very high efficiency. In particular, by using the division residue for reflecting the fact that the two-dimensional look-up table comprises two or more groups of elements based on identical elements of the base look-up table, the division residue is used for determining which element of the base look-up table is used for obtaining an element of the two-dimensional look-up table. In other words, by considering said division residue a 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 residue is also periodic with increasing probability index.
[0127] 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 index i) and for a given (reference) coding 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 coding interval sizes different from the given coding interval size from the probability table.
[0128] The concept is based on the same considerations as the corresponding concept described for the case of separate mappings for the state variable values.
[0129] 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 index i) and for a given (reference) coding 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 coding interval sizes different from the given coding interval size from the probability table.
[0130] It has been found that the determination of the elements of the two-dimensional look-up table in such operation includes an especially high resource efficiency. Moreover, it should be noted that the remarks made above with respect to the corresponding algorithm used within the context of separate mappings for the first and second state variable values apply as well. By using a probability table, which is typically smaller (e.g., includes fewer 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) coding 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).
[0131] The scaling is used to derive elements of the two-dimensional look-up table for one or more probability values not in the set of the plurality of probability values and for one or more coding interval sizes different from the given coding interval size from the probability table. Thus, it is sufficient to have a very small probability table, which for example can comprise only one row or one column. 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). Further, it is noted that the scaling depends on the probability value and / or on the coding interval size. The scaling can for example be performed using a very simple mechanism, if the size of the probability table is chosen appropriately, as using a bit shift operation. Such "simple" scaling operation based on a bit shift operation requires significantly less computational resources than a "usual" multiplication with an arbitrary variable operand (e.g. different from a power of two).
[0132] 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 the probability table depending on the 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 (indicated 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).
[0133] It has been found that this calculation of the element of the two-dimensional look-up table is particularly efficient. Further, reference is also 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.
[0134] 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 a first size value (e.g. μ; wherein the size value for example 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 multiplicative scaling factor (Qr2(R)) of the first scaling.
[0135] 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 state variable value and the second state variable value.
[0136] 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
[0137]
[0138] 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 value of I typically is 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 bit shift operation, wherein y determines whether a right shift of x is performed and determines how many bits are right shifted.
[0139] 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.
[0140] 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 the probability table (probTabLPS[i%μ]) 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 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).
[0141] 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.
[0142] In a preferred embodiment of the arithmetic encoder, 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. μ; 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 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.
[0143] With respect to this functionality, also reference is made to the corresponding functionality provided in the context of the above separate mapping of the first state variable value and the second state variable value, wherein the combined state variable value or the combined probability value is used in place of the individual state variable values or the individual probability values, respectively.
[0144] 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:
[0145]
[0146] 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 (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 bit shift operation, wherein y determines whether and how many bits of x are right-shifted.
[0147] With respect to this functionality, also reference is made to the corresponding functionality provided in the context of the above separate mapping of the first state variable value and the second state variable value, wherein the combined state variable value is used in place of the individual state variable values, and wherein the combined probability value is used in place of the individual probability values.
[0148] In a preferred embodiment, the arithmetic encoder is configured to compute 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 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 the encoding interval size information (e.g. R) describing the size of the encoding interval of the arithmetic encoding before the encoding symbol is encoded onto a quantization level; computing the product between the combined probability value and the quantization level (by look-up of a pre-computed product, or by multiplication).
[0149] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value, wherein the combined state variable value replaces the individual state variable values, and wherein the combined probability value replaces the individual probability values.
[0150] 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.
[0151] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value.
[0152] In a preferred embodiment, the arithmetic encoder is configured to perform the quantization of the coding interval size information R by where u, v and w are parameters.
[0153] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value.
[0154] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table monotonically decrease with an increase of the combined state variable value or of a scaled and / or rounded version thereof .
[0155] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value.
[0156] In a preferred embodiment of the arithmetic encoder, wherein different value intervals of a value range for the combined state variable value or for a scaled and / or rounded version thereof are equal.
[0157] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value.
[0158] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table monotonically decrease with an increase of the combined state variable value or of a scaled and / or rounded version thereof at a decreasing rate.
[0159] With respect to this functionality, also reference is made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first state variable value and the second state variable value.
[0160] In a preferred embodiment of the arithmetic encoder, the look-up table defines an exponential decay (e.g. falling from 0.5) within a tolerance of + / - 10% or + / - 20% for example.
[0161] It has been found that an exponential decay well reflects the appropriate relationship for deriving interval size information based on the state variable values. Moreover, an exponential decay can be represented very efficiently using a look-up table, wherein it is even possible to determine the elements of the look-up table in less effort during operation.
[0162] In a preferred embodiment, the arithmetic encoder is configured to update the plurality of variable state values according to
[0163]
[0164] 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 to avoid an updated to deviate from its value range, (e.g. taking into account has a value range larger than ; i.e. is quasi-quantized to
[0165] ; for extreme values of may deviate from its value range according to the above equation by being modified by an unmodified A; to avoid this situation, 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).
[0166] It has been found that such an update of the state variable values can be performed with higher computational efficiency, wherein a mapping table can be pre-computed. For example, it is possible to keep the state variable values within a predetermined range (e.g. between a predetermined minimum value and a predetermined maximum value). Moreover, using an appropriate selection of the mapping table A, it is possible to achieve that the state variable values well adapt to a description of the statistics of the symbols of a previous processing (e.g. encoding or decoding). Furthermore, it should be noted that the adaptation time constant of the individual state variable values can be adapted by an appropriate selection of the weighting values m and n. Thus, the algorithm described herein can be effectively used for updating the state variable values
[0167] In a preferred embodiment, the arithmetic encoder is configured to derive the update of the state variable value (s
[0168] Thus, different concepts can derive an update of the state variable value.
[0169] An arithmetic encoder for encoding a plurality of symbols having a symbolic value (e.g. a binary value) is created according to an embodiment of the present invention, wherein the arithmetic encoder is configured to determine one or more state variable values (s k , s2 k ) representing a statistic of a plurality of previously encoded symbolic values (e.g. a sequence of binary values 0 and 1) (e.g. in case of a plurality of state variable values, for statistics having different adaptation time constants), and wherein the arithmetic encoder is configured to derive interval size information (p i k ) for an arithmetic encoding of one or more to-be-encoded symbolic values (e.g. associated with a given context mode, indicated by index k) based on the one or more state variable values (s k , R*p k ) representing a statistic of a plurality of previously encoded symbolic values (e.g. a sequence of binary values 0 and 1) (e.g. in case of a plurality of state variable values, for statistics having different adaptation time constants), wherein the arithmetic encoder is configured to update the first state variable value (s k 1) depending on the to-be-encoded symbol and using a look-up table (A) (e.g. after encoding the to-be-encoded symbol).
[0170] The embodiment according to the present invention is based on the finding that the update of the state variable value for deriving interval size information for an arithmetic encoding (e.g. encoding or decoding) can be performed using a look-up table with particularly good results, 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 to-be-encoded symbol or a decoded symbol) decides which part of e.g. a mapping rule based on a look-up table is evaluated in order to obtain the updated state variable value.
[0171] In summary, it has been found that using a look-up table for providing an updated state variable value provides both high flexibility and low computational complexity.
[0172] In a preferred embodiment, the arithmetic encoder is configured to update the second state variable value (s2) depending on the symbol to be encoded and using said look-up table (A) (e.g. after encoding the symbol to be encoded). k 2).
[0173] It has been found that it is advantageous to use the same look-up table for updating the second state variable, the second state variable value being used for updating the first state variable value. For example, possible differences in adaptation time constants with respect to the first state variable value and the second state variable value can be taken into account using one or more scaling factors, which for example can be applied for selecting an element of the look-up table and / or for scaling 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 properties of the processed symbol values (i.e. previously encoded symbol values or decoded symbol values).
[0174] In a preferred embodiment, the arithmetic encoder is configured to use different adaptation time constants for updating the first state variable value and the second state variable value.
[0175] 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 size for arithmetic coding (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.
[0176] In a preferred embodiment, the arithmetic encoder is configured to selectively increase or decrease the previous state variable value by a value determined using the look-up table depending on whether the symbol to be encoded is of a first value or a second value different from the first value.
[0177] By using such a method, the state variable values can be adapted in a recursive manner, wherein the processed symbol (e.g. the 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 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.
[0178] In a preferred embodiment, the arithmetic encoder is configured to increase the previous state variable value by a relatively large value if the previous state variable value is negative compared to 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 if the previous state variable value is positive compared to 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 suitable selection of a look-up table).
[0179] 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 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 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 value. In particular, it has been found that such a method is well suited for an "infinite impulse response" method for determining the state variable value.
[0180] In a preferred embodiment, the arithmetic encoder is configured to determine the index of the entry of the look-up table to be evaluated when updating the first state variable value depending on a sum of a predetermined (e.g. fixed) offset value (z) and the previous calculated first state variable value or a scaled and / or rounded version thereof if the symbol to be encoded takes a first value; and wherein the arithmetic encoder is configured to determine the index of the entry of the look-up table to be 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 previous calculated first state variable value or a scaled and / or rounded version thereof (e.g. of the inverted version of the previous calculated first state variable value) if the symbol to be encoded takes a second value different from the first value.
[0181] Using such a method, given the currently processed symbol, a proper entry of the look-up table can be selected with moderate effort. Both the previously computed 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 by how much the state variable value is increased or decreased when compared to the previously computed state variable value. For example, an offset value can ensure that the sum of the offset value and the scaled (and possibly negated, depending on the processed symbol) previously computed state variable value results in a valid look-up table index, since valid look-up table indices are typically non-negative. Using this concept, the proper look-up table index can be easily selected and the updated state variable value can be efficiently provided.
[0182] In a preferred embodiment, the arithmetic encoder is configured to determine the index of the entry of the look-up table evaluated when updating the second state variable value, depending on a sum of a predetermined (e.g. fixed) offset value (z) and a previously computed second state variable value or a scaled and / or rounded version thereof if the symbol to be encoded takes a first value; and wherein the arithmetic encoder is configured to determine the index of the entry of the look-up table evaluated when updating the second state variable value, depending on a sum of a predetermined (e.g. fixed) offset value (z) and a negated (multiplied by -1) version of the previously computed second state variable value or a scaled and / or rounded version thereof (e.g. of the negated version of the previously computed second state variable value) if the symbol to be encoded takes a second value.
[0183] The concept for updating the second state variable value is essentially the same as the concept for updating the first state variable value, wherein for example the same look-up table can be evaluated to save memory resources, and wherein for example a different scaling value can be used when compared to updating the first state variable value, in order to obtain a modified state variable value update behavior. For example, different adaptation time constants for the first state variable value and for the second 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.
[0184] 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 evaluated when updating the first state variable value, to scale the previously computed 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 evaluated when updating the second state variable value, to scale the previously computed second state variable value (s k2) scaling, 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).
[0185] By using different scaling values when determining the index of the entry of the look-up table to be evaluated when updating the first state variable value and when determining the index of the entry of the look-up table to be 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 selection of the scaling values. This allows for a large degree of resource saving.
[0186] In a preferred embodiment, the arithmetic encoder is configured to use a first scaling value (e.g. n k 1) scaling the value returned by the evaluation of the look-up table, wherein the arithmetic encoder is configured to use a second scaling value (e.g. n k 2) scaling the value returned by the evaluation of the look-up table, wherein the first scaling value is different from the second scaling value.
[0187] The described different scaling of the value returned by the evaluation of the look-up table (e.g. the selected look-up table entry) allows for effectively realizing different adaptation time constants when updating the first state variable value and the second state variable value. Moreover, such scaling allows for using the same look-up table for updating the first state variable value and for updating the second state variable value, which contributes to saving memory resources.
[0188] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0189]
[0190] 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.
[0191] It has been found that such an update mechanism for state variable values can be realized with high computational efficiency and provides reliable results.
[0192] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0193]
[0194] where 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.
[0195] It has been found that such a mechanism for updating the 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.
[0196] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0197]
[0198] where 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.
[0199] It has been found that the concept also leads to particularly high computational efficiency and good accuracy in some implementation environments.
[0200] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0201]
[0202] where 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.
[0203] It has been found that the concept also leads to advantages in terms of computational efficiency and reliability in some situations.
[0204] In a preferred embodiment of the arithmetic encoder, the entries of A monotonically decrease with increasing look-up table index.
[0205] Using such a method, it can be achieved that the approximation of the state variable values towards the maximum values or minimum values is monotonic and / or continuous and / or asymptotic. For example, it can be achieved that state variables far away from the respective maximum values or minimum values are relatively quickly modified towards the maximum values or towards the minimum values, whereas state variable values relatively close to the respective maximum values or minimum values are relatively slowly changed towards the maximum values or minimum values. Thus, the above-described selection of the entries of the look-up table allows a smooth approximation of the maximum values or minimum values, which has been found to be very helpful for deriving interval size information based on one or more state variable values.
[0206] In a preferred embodiment of the arithmetic encoder, A is or deviates from this equation by being set to zero or being scaled down for one or more of its extreme values only to avoid an updated to deviate from the predetermined value range, (e.g. taking into account has a value range larger than ; i.e. is quasi-quantized to
[0207] is upper-bounded by for extreme values of may deviate from its value range according to the above equation by being modified by an unmodified A; to avoid this situation, 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).
[0208] It has been found that such a selection of the look-up table A leads to particularly advantageous behavior of the state variable values which are updated using said look-up table A.
[0209] 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.
[0210] By using the last entry of the look-up table which is equal to 0, it can be easily avoided that the updated state variable value exceeds the maximum value and / or the minimum value.
[0211] In a preferred embodiment, the arithmetic encoder 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.
[0212] Using such a mechanism, it can be easily prevented that the state variable value exceeds the predetermined range between the minimum value and the maximum value. Thus, it can be ensured that the state variable value takes "reasonable" values.
[0213] In a preferred embodiment, the arithmetic encoder is configured to apply a clipping operation to the updated state variable value according to
[0214]
[0215] wherein is a maximum allowed value for and wherein is a minimum allowed value for .
[0216] It has been found that such a clipping operation can be implemented in an efficient way and avoids invalid state variable values.
[0217] In a preferred embodiment, the arithmetic encoder 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).
[0218] 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 values 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 way.
[0219] In a preferred embodiment, the arithmetic encoder is configured to obtain interval size information as defined in one of the above embodiments.
[0220] 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.
[0221] 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 an 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), (the size of the base lookup table is smaller than the number of possible probability indices i in terms of the probability indices), wherein the arithmetic encoder is configured to determine the interval 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 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 arithmetic encoder is configured to perform the arithmetic encoding of the one or more symbols using the interval size value (R LPS ).
[0222] The embodiment according to the present application is based on the idea that the determination of the interval size value in the arithmetic encoder can be performed using a "base lookup table" by reusing elements of said base lookup table (once without scaling and once with scaling) whose size is smaller than the number of different interval size values associated with a given current encoding interval size. Thus, the interval size values associated with different ranges of state variable values for the arithmetic encoding (encoding / decoding) can substantially differ by scaling (e.g. in addition to some rounding effects). Thus, a relatively small "base lookup table" can be used whose entries are used multiple times for different probability indices (wherein the probability indices can be derived based on the respective state variable values).
[0223] In summary, the concept described herein allows for an efficient determination of the interval size value based on the one or more state variable values.
[0224] 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 PS ) is a right-shifted version of an element of the base lookup table.
[0225] The concept is based on the idea that a right-shift operation is computationally very efficient and provides a reliable interval size value if the probability index is in the second range (while preferably no shift operation is applied to the elements of the base lookup 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 (in addition to a 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). Moreover, it should be noted that a right-shift operation typically corresponds to a division by a power of 2.
[0226] 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 an element of the look-up table is scaled and rounded to obtain the interval size value (R LPS ).
[0227] 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 (the 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 with 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.
[0228] In a preferred embodiment of the arithmetic encoder, the division remainder (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 an interval size index (which can be obtained, for example, based on the interval size information or the 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.
[0229] By selecting an entry of the base look-up table depending on the division remainder and also depending on the interval size index, a two-dimensional base look-up table can be easily evaluated, wherein an element of the two-dimensional base look-up 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 look-up table (wherein the division remainder 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 remainder as a first table index well adapts to the fact that elements of the base look-up table are cyclically selected with increasing probability index (as the subsequent ranges of the probability index select a common range of the base look-up table). In summary, the above-described implementation allows very simple access to elements of the base look-up table and facilitates avoiding a multiplication with the interval size value due to the two-dimensional nature of the base look-up table.
[0230] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R XPS (e.g., R LPS ) according to the following formula:
[0231]
[0232] wherein BaseTabLPS is a base lookup table of size μ; 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 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.
[0233] It has been found that such a concept for determining interval size values constituting interval size information is highly computationally efficient and allows for using relatively small base lookup tables. In particular, multiplication operations can be avoided. Furthermore, division remainder operations and division operations 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 interval size values allows for a very computationally efficient implementation.
[0234] In a preferred embodiment, the arithmetic encoder is configured to derive the interval size value (R i k ) for the arithmetically encoding of one or more symbol values to be encoded (e.g. a sequence of binary values 0 and 1) based on one or more state variable values (s LPS ) associated with a given context mode (indicated by the index k), which represent statistics of a plurality of previously encoded symbol values (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), which probability table is smaller in size with respect to probability indices than the number of possible probability indices i, wherein the probability table describes 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); and wherein the arithmetic encoder is configured to perform the arithmetic encoding of one or more symbols using the interval size value (R LPS ) and the probability value (or, the probability index).
[0235] 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 for example be implemented in a computationally efficient way (e.g. using bit shift operations) if the size of the look-up table (probability table) is chosen appropriately. Thus, the interval size values for arithmetic encoding (encoding or decoding) can be derived with a small computational effort and also using only a small size memory saving look-up table.
[0236] 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 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).
[0237] By using a two-step multiplication or scaling, it is allowed to use a small probability table for obtaining the interval size information. For example, the probability table can only "directly" cover a given, relatively small range of single encoding interval sizes and probability values (which can be represented by "the set of multiple probability values"). Thus, for any other encoding interval size and for any probability value not included in the set of multiple probability values directly covered by the probability table, a scaling is performed such that a meaningful and reliable interval size value is obtained.
[0238] 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 a first size value (e.g. μ; wherein the size value describes for example the 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. determines the scaling factor used in the second scaling and / or wherein the encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0239] Using the division residue to determine which element of the probability is scaled facilitates exploiting the fact that entries of the probability table are reused (e.g. in a cyclic fashion) as the probability index increases. The division residue represents this fact. Moreover, the division residue can in some cases be computed with very high computational efficiency, especially in case of division by a power of 2.
[0240] Furthermore, determining the scaling factor based on the integer division result allows for easily allocating the scaling factor to different (adjacent) ranges of probability index values. Moreover, the integer division result can in some cases be computed in a computationally efficient manner, especially in case of division by a power of 2.
[0241] Furthermore, 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 high efficiency and high accuracy.
[0242] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to XPS (e.g. R LPS ):
[0243]
[0244] 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; 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 (e.g. 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 bit shift operation, wherein y determines whether and by how many bits x is right-shifted).
[0245] 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.
[0246] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size information using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i % m]) depending on whether the element associated with the current probability value (denoted 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 encoding interval size (R).
[0247] 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.
[0248] In a preferred embodiment, 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 the division remainder (i % m) which 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 element of the probability table which is scaled in the first scaling. The scaling factor (e.g. Qr1(i)) used in the first scaling is determined or ; and / or wherein the (current) encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0249] 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.
[0250] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R XPS (e.g. R LPS ) according to
[0251]
[0252] 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 the division remainder operation; wherein / is the 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 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, where a is preferably a constant greater or equal to 2, and where b is preferably a constant greater or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether a right shift of x is performed and how many bits are right shifted.
[0253] 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.
[0254] In the following, a number of embodiments related to arithmetic encoding will be described. However, the ideas, considerations and details behind these ideas related to arithmetic encoding are essentially the same as the ideas, considerations and details behind the concepts for arithmetic encoding. Thus, 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. Furthermore, 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.
[0255] 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 derive interval size values (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 ) 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, associated with a given context mode, indicated by an index k, wherein the arithmetic decoder is configured to determine the interval size values (R LPS ) using a base lookup table (Base TabLPS) having a size smaller than the number of possible probability indices i in terms of probability indices, wherein the arithmetic decoder 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 (s LPS ) is in a first range (e.g. smaller than μ), the determined interval size value is identical to or 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. greater 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 arithmetic decoder is configured to perform the arithmetic decoding of the one or more symbols using the interval size values (R LPS ).
[0256] In a preferred embodiment, the arithmetic decoder is configured to determine the range size value such that, if the probability index is in a second range, the determined range size value (R LPS ) is a right-shifted version of an element of the base lookup table.
[0257] In a preferred embodiment of the arithmetic decoder, the probability index (Qp2(p LPS ) determines whether an element of the lookup table is provided as the range size value (R LPS ) or whether an element of the lookup table is scaled and rounded to obtain the range size value (R Lps ).
[0258] 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 e.g. describes an extension of the base lookup table in a first direction) and a range size index (e.g., which can be obtained based on the range size information or the total range size information R, e.g. using a quantization operation Qr2(.)) determines which element of the base lookup table is used to obtain the range size value.
[0259] In a preferred embodiment, the arithmetic decoder is configured to obtain the range size value R XPS (e.g., R LPS ) according to:
[0260]
[0261] wherein BaseTabLPS is a base lookup table of size μ dimensions; wherein i is a table index associated with the probability information; wherein j is a table index associated with the range size information (e.g., the total range 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 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-shift bit-shift operation, wherein y determines whether a right-shift of x is performed and determines how many bits to right-shift by).
[0262] 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 determine a range size value (R i k) to derive an interval size value (R LPS ) for the arithmetic decoding of one or more to-be-decoded symbol values, the one or more state variable values representing statistics of a plurality of previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., with different adaptation time constants), wherein the arithmetic decoder 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) coding interval size (R LPS ), (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 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 larger than or equal to μ) and / or in case the current coding interval size (R
[0263] 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 the probability table (probTabLPS[i%μ]) depending on the (current) 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 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).
[0264] 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 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.
[0265] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R XPS ( e.g. R LPS ) according to
[0266]
[0267] 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 (e.g. 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).
[0268] 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%μ]) dependent on whether the element associated with the current probability value (indicated by index i) is included in the probability values (e.g. dependent 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 dependent on the coding interval size (R).
[0269] In a preferred embodiment of the arithmetic decoder, 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. μ; wherein 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 wherein the integer division result of the division between the probability index (i) and the first size value determines the scaling factor used in the first scaling (e.g. or ); and / or wherein the (current) coding interval size (R) determines the multiplicative scaling factor of the second scaling (Qr2(R)).
[0270] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R XPS ( e.g. R LPS ) according to
[0271]
[0272] Where i is the table index associated with probability information; where j is the table index associated with (current) interval size information; where % is the division residual operation;
[0273] Where / is a division operation (e.g., providing an integer result); where probTabLPS[] is the probability table; where μ is a plurality of elements in the probability table (where the range of values for i is typically greater than μ); where R is the interval size (e.g., the size of the current encoding interval); where Qr2(R) is a scaling factor dependent on R; where Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down 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 to perform a right shift of x and determines how many bits to shift to the right.
[0274] The following will discuss some additional embodiments related to arithmetic coding.
[0275] An arithmetic encoder for encoding multiple 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 a state variable value (s). k The state variable value represents a statistical representation of multiple previously encoded symbol values, and the arithmetic encoder is configured to: combine the state variable values or their scaled and / or rounded versions. To calculate the sub-interval width value (R) of the arithmetic code used to encode the symbol value to be encoded. LPS The calculation is performed by using its entries to include combinations of state variable values or their scaled and / or rounded versions. A one-dimensional lookup table (probTabLPS[Qp2(...)]) represents the probability values of a state variable (s) across different intervals of its range. k (or its scaled and / or rounded version) Mapped to probability values; and encoding interval size information (e.g., R) describing the size of the encoding interval for arithmetic encoding before the arithmetic encoding of the symbol to be encoded is quantized to a quantization level (Qr2(R)); the product between the probability value and the quantization level is determined (by a lookup of the pre-computed product or by multiplication), wherein the arithmetic encoder is configured to perform state variable value updates depending on the symbol value to be encoded.
[0276] The embodiment is based on the finding that a very simple one-dimensional look-up table can be used to determine the sub-interval width value based on the combined state variable value. The coding interval size is taken into account by quantizing the coding interval size information and by determining the product between the probability value and the quantized value (or, quantization level). Thus, reliable results can be obtained with moderate effort.
[0277] In a preferred embodiment, the arithmetic encoder is configured to determine a combined state variable value (s i k ) as a function of a plurality of state variable values (s k ) representing statistics of a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1) having different adaptation time constants, e.g., by deriving a combined state variable value (e.g., can be a weighted sum of state variable values) as one state variable value (s k ) from a plurality of state variable values (s
[0278] It has been found that using a combined state variable value as one state variable value leads to particularly good results. The consideration of different adaptation time constants allows to take both short-time statistics and long-time statistics into account, thus making the sub-interval width value particularly reliable.
[0279] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of state variable values in order to obtain the combined state variable value.
[0280] Such a calculation of the combined state variable value allows to take into account different influences of short-term statistics and long-term statistics on the combined state variable value while keeping the computational effort comparably low.
[0281] In a preferred embodiment, the arithmetic encoder is configured to determine a sum of rounded values in order to obtain the combined state variable value (s k ), the rounded values being obtained by rounding a product of a state variable value and an associated weighting value .
[0282] Applying the rounding operation before the summation reduces the computational effort and eliminates the influence of small products of state variable values and associated weighting values. Thus, the reliability is increased.
[0283] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value (s k ) according to
[0284]
[0285] wherein s k2 is 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 combined state variable value) (wherein d k i is preferably an integer power of 2, and wherein the ratio between two different d k i is preferably an integer power of 2) [wherein the ratio between two different d k i is preferably larger than or equal to 8).
[0286] It has been found that such a derivation of the combined state variable value is especially advantageous. Reference is also made to the explanations above regarding the corresponding concept for determining the combined state variable value.
[0287] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value according to
[0288]
[0289] 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 to avoid an updated to deviate from the predetermined value range, (e.g. taking into account has 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 equation above by being modified 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).
[0290] It has been found that such an update of the state variable value is especially advantageous. Reference is also made to the explanations above regarding this concept for updating the state variable.
[0291] In a preferred embodiment, the arithmetic encoder is configured to derive the combined state variable value by table lookup or in a computational manner
[0292] With respect to this concept, reference is made to the explanations above.
[0293] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0294]
[0295] where 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.
[0296] With respect to the advantages of this concept for updating the one or more state variable values, reference is made to the explanations above.
[0297] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0298]
[0299] where 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.
[0300] With respect to the advantages of this concept for updating the one or more state variable values, reference is made to the explanations above.
[0301] In a preferred embodiment, the arithmetic encoder is configured to determine the one or more updated state variable values according to
[0302]
[0303] where 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.
[0304] With respect to the advantages of this concept for updating the one or more state variable values, reference is made to the explanations above.
[0305] In a preferred embodiment, the arithmetic encoder is configured to perform quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
[0306] The logical right shift of the coding interval size information is computationally efficient.
[0307] In a preferred embodiment, the arithmetic encoder is configured to perform a quantization of the coding interval size information R by where u, v and w are parameters.
[0308] Advantages with respect to the quantization of the coding interval size information are referred to above.
[0309] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional look-up table monotonously decrease with an increase of a state variable value or a scaled and / or rounded version thereof .
[0310] Advantages with respect to the structure of the one-dimensional look-up table are referred to above.
[0311] In a preferred embodiment of the arithmetic encoder, wherein different value intervals of a value range for a state variable value or a scaled and / or rounded version thereof are equal.
[0312] Advantages with respect to this concept are referred to above.
[0313] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional look-up table monotonously decrease with an increase of a state variable value or a scaled and / or rounded version thereof at a decreasing rate.
[0314] Advantages with respect to this concept are referred to above.
[0315] In the following, concepts for arithmetic decoding will be described, which correspond to the above described concepts for arithmetic encoding. Thus, the same explanations apply and optionally the same details described above are used. However, it should be noted that the arithmetic encoder corresponds to the arithmetic decoder. Further, the previously encoded symbol values generally correspond to the previously decoded symbol values and the symbol values to be encoded can generally correspond to the previously decoded symbol values (or, to the symbol values to be decoded). However, with respect to the correspondence of features, also reference is made to the comparison with respect to the corresponding claims defining the related (or, corresponding) concepts.
[0316] 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 base 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 k , R*p k ) for an arithmetic decoding of one or more symbols to be decoded, the plurality of state variable values 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, wherein the arithmetic decoder is configured to use a look-up table (LUT1) to map a first state variable value (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 using a look-up table (LUT1) in order to obtain said interval size information (e.g. p k or R*p k ) describing an interval size for an arithmetic decoding of one or more symbols to be decoded.
[0317] In a preferred embodiment, the arithmetic decoder is configured to use a look-up table to map the first state variable value or a scaled and / or rounded version thereof onto a first probability value (p k 1) and wherein the arithmetic decoder is configured to use a look-up table to map the second state variable value or a scaled and / or rounded version thereof onto a second probability value (pk 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).
[0318] 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. a “0”) 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. a “1”) (e.g. such that the state variable value can take positive and negative values), wherein the arithmetic decoder is configured to determine an entry of the look-up table to be evaluated depending on an 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).
[0319] In a preferred embodiment, the arithmetic decoder 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 decoder 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., to ).
[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 look-up 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 look-up table).
[0323] In a preferred embodiment, the arithmetic decoder is configured to determine the two or more probability values p k i :
[0324]
[0325] wherein LUT1 is a look-up 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 look-up table).
[0326] In a preferred embodiment, the arithmetic decoder is configured to obtain a combined probability value p k i based on the plurality of probability values p k :
[0327]
[0328] 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 individual state variable values on the combined probability value) [where b k i are preferably integer values of the potency of 2, and where the ratio between two different b k i are preferably integer values of the potency of 2].
[0329] In a preferred embodiment, the arithmetic decoder is configured to map the first state variable value or a scaled and / or rounded version thereof onto a first interval width value (R*p k 1) using a two-dimensional look-up table whose entries are addressed depending on the first state variable value and depending on the coding interval size information (e.g. R) describing the size of the coding interval of the arithmetic decoding prior to the decoding of the symbol.
[0330] where the arithmetic decoder is configured to map the second state variable value or a scaled and / or rounded version thereof onto a second interval width value (R*p k 2) using a two-dimensional look-up table whose entries are addressed 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 decoding prior to the decoding of the symbol. Where the arithmetic decoder is configured to use the first sub-interval width value and the second sub-interval width value to obtain a combined sub-interval width value (e.g. using a weighted sum or using a weighted average).
[0331] In a preferred embodiment of the arithmetic decoder, the two-dimensional look-up table can be represented as a dyadic 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 probability values of different value intervals of the value range of the first state variable value and the second state variable value or a scaled and / or rounded version thereof (|s |s k |·a k ) ; the entries of the second one-dimensional vector comprising quantization levels for the coding interval size information.
[0332] 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 (BaseTabLPS), wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or are a rounded version 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 a scaled and rounded version of the elements of the base look-up table.
[0333] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional look-up table are a right-shifted version of the elements of the base look-up table.
[0334] 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 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 a 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 a probability value (e.g., p LPS ) e.g., using a quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0335] 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 e.g. describes an extension of the base look-up table in a first direction) and an interval size index (e.g., obtainable based on interval size information R; e.g., using a quantization operation Qr2(.) (e.g., j)) determines which element of the base look-up table is used for obtaining an element of the two-dimensional look-up table.
[0336] In a preferred embodiment, the arithmetic decoder is configured to obtain an element of the two-dimensional look-up table (RangTabLPS) according to:
[0337]
[0338] wherein BaseTabLPS is a base look-up table of size μ; 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-round operation, wherein a is preferably a constant larger or equal to 2, and wherein b is preferably a constant larger 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.
[0339] In a preferred embodiment of the arithmetic decoder, elements of a 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 scaling is used to derive 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.
[0340] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%u]) depending on the 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 (denoted 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).
[0341] In a preferred embodiment of the arithmetic decoder, a division residue of a division between a probability index (e.g. i; e.g. denoting a current probability value) and a first size value (e.g. u; wherein the size value e.g. describes an extension of the probability table) (i%u) 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. determines a scaling factor used in the second scaling and / or wherein the encoding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
[0342] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of the two-dimensional look-up table according to:
[0343]
[0344] 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 is typically larger than μ); where R is the interval size (or, the current coding interval size); where Qr2(R) is a scaling factor dependent on R; where Scal(x, y) is a scaling function (e.g., defined as where is a floor operation, where a is preferably a constant larger than or equal to 2, and where b is preferably a constant larger than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether a right shift of x is performed and how many bits are right shifted.
[0345] In a preferred embodiment of the arithmetic decoder, the element of the two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) dependent on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., dependent 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 dependent on the coding interval size (R).
[0346] In a preferred embodiment of the arithmetic decoder, 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) 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 the scaling factor used in the first scaling and / or where the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0347] In a preferred embodiment, the arithmetic decoder is configured to obtain the element RangeTabLPS[i][j] of the two-dimensional look-up table according to:
[0348]
[0349] 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 (e.g. providing an integer result); where probTabLPS[] is the probability table; where μ is the number of elements of the probability table (where the range of values of I is typically larger than μ); where R is the 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 is preferably a constant larger than or equal to 2, and where b is preferably a constant larger 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.
[0350] In a preferred embodiment, the arithmetic decoder is configured to compute a first sub-interval width value and a second sub-interval width value (R * p k ) from the first state variable value and the second state variable value or scaled and / or rounded versions thereof by using a one-dimensional look-up table (LUT4) whose entries comprise probability values for different value intervals of the value range for the first state variable value and the second state variable value or scaled and / or rounded versions thereof mapping the first state variable value and the second state variable value (s k ) or scaled and / or rounded versions thereof onto a first probability value and a second probability value, and quantizing the coding interval size information (e.g. R) describing the size of the coding interval of the arithmetic coding preceding the encoding symbol onto a quantization level; determining the product between the first probability value and the second probability value and the quantization level on the one 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 to obtain a combined sub-interval width value (e.g. using a weighted sum or using a weighted average).
[0351] In a preferred embodiment, the arithmetic decoder is configured to perform the quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
[0352] In a preferred embodiment, the arithmetic decoder is configured to perform the quantization of the coding interval size information R by where u, v and w are parameters.
[0353] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table map the first state variable value and the second state variable value or scaled and / or rounded versions thereof monotonically decreases with increasing values of the first state variable value and the second state variable value or of the scaled and / or rounded versions thereof.
[0354] In a preferred embodiment of the arithmetic decoder, different value intervals of a value range for the first state variable value and the second state variable value or of the scaled and / or rounded versions thereof have equal size.
[0355] In a preferred embodiment of the arithmetic decoder, entries of a one-dimensional look-up table monotonically decrease with increasing values of the first state variable value and the second state variable value or of the scaled and / or rounded versions thereof at a decreasing rate.
[0356] An embodiment according to the present invention 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 interval size information (p i k , R*p k ) for an arithmetic decoding of one or more symbols to be decoded based on a plurality of state variable values (s k ) (e.g. associated with a given context model, indicated by an index k), which represent statistics (e.g. an estimate of a probability of certain symbol values comprising the one or more symbols to be decoded) of a plurality of previously decoded symbol values (e.g. a sequence of binary values 0 and 1) having different adaptation time constants, wherein the arithmetic decoder is configured to derive a combined state variable value (s i k ) (which can e.g. be a weighted sum of the state variable values) based on the plurality of (individual) state variable values (s k ), and wherein the arithmetic decoder 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 (e.g. p k or R*p k ) describing an interval size for an arithmetic decoding of the one or more symbols to be decoded.
[0357] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of the state variable values in order to obtain the combined state variable value.
[0358] In a preferred embodiment, the arithmetic decoder is configured to determine a sum of rounded values (r ) obtained by rounding a product of a state variable value (s ) and an associated weighting value (w ) in order to obtain the combined state variable value (s k ).
[0359] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value s according to k :
[0360]
[0361] where s k 2 is 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 weighted 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].
[0362] 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., a “0” of the code), 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., a “1” of the code) (e.g., such that the state variable value can take positive and negative values), and where 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 (if s k i > 0, is s k , else is -s k .
[0363] 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., a positive sign), and where 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 ) if the combined state variable value takes a second sign (e.g., a negative sign).
[0364] In a preferred embodiment, the arithmetic decoder is configured to determine the combined probability value p according to the following formula k :
[0365]
[0366] wherein LUT2 is a look-up table containing probability values; wherein is a down-rounding operator; wherein s k is a combined variable value; and wherein a k is a weighting value associated with the combined state variable value (e.g. a weighting value that makes the numerical range of the ith state variable value applicable to the number of entries of the look-up table).
[0367] In a preferred embodiment, the arithmetic decoder is configured to determine the combined probability value p according to the following formula k :
[0368]
[0369] wherein LUT2 is a look-up table containing probability values; wherein is a down-rounding operator; wherein s k is a combined variable value; and wherein a k is a weighting value associated with the combined state variable value (e.g. a weighting value that makes the numerical range of the ith state variable value applicable to the number of entries of the look-up table).
[0370] In a preferred embodiment, the arithmetic decoder is configured to map the combined state variable value or a scaled and / or rounded version thereof onto a sub-interval width value (R*p k ) using a two-dimensional look-up table whose entries are addressed depending on the combined state variable value and depending on the encoding interval size information (e.g. R) describing the size of the arithmetic decoding encoding interval before decoding of the symbol.
[0371] In a preferred embodiment of the arithmetic decoder, the two-dimensional look-up table can be represented as a dyadic 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 encoding interval size information.
[0372] 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 (BaseTabLPS), wherein a first group of elements (or, block; e.g., "upper half") of the two-dimensional look-up table are identical to or are a rounded version 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 a scaled and rounded version of the elements of the base look-up table.
[0373] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional look-up table are a right-shifted version of the elements of the base look-up table.
[0374] In a preferred embodiment of the arithmetic decoder, the probability index (Qp2(p LPS ) or i) determining whether to evaluate an element of the first group of elements of the two-dimensional look-up table or an element of the second group of elements of the two-dimensional look-up table, 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 group 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 ) e.g., using a quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0375] In a preferred embodiment of the arithmetic decoder, 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 the interval size index (e.g., obtainable based on interval size information R; e.g., using a quantization operation Qr2(.) (e.g., j)) determine which element of the base look-up table is used to obtain an element of the two-dimensional look-up table.
[0376] In a preferred embodiment, the arithmetic decoder is configured to obtain an element of the two-dimensional look-up table (RangTabLPS) according to:
[0377]
[0378] wherein BaseTabLPS is a base look-up table of size μ; 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-round operation, wherein a is preferably a constant larger or equal to 2, and wherein b is preferably a constant larger 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.
[0379] In a preferred embodiment of the arithmetic decoder, elements of a 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 scaling is used to derive 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.
[0380] In a preferred embodiment of the arithmetic decoder, an element of the two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%u]) depending on the 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 (denoted 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).
[0381] In a preferred embodiment of the arithmetic decoder, a division residue of a division between a probability index (e.g. i; e.g. denoting the current probability value) and a first size value (e.g. u; wherein the size value e.g. describes an extension of the probability table) (i%u) 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. determines a scaling factor used in the second scaling and / or wherein the encoding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
[0382] In a preferred embodiment, the arithmetic decoder is configured to obtain an element RangeTabLPS[i][j] of the two-dimensional look-up table according to:
[0383]
[0384] 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 is typically larger than μ); where R is the interval size (or, the current coding interval size); where Qr2(R) is a scaling factor dependent on R; where Scal(x, y) is a scaling function (e.g., defined as where is a down-rounding operation, where a is preferably a constant larger than or equal to 2, and where b is preferably a constant larger 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.
[0385] In a preferred embodiment of the arithmetic decoder, the element of the two-dimensional look-up table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) dependent on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., dependent 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 dependent on the coding interval size (R).
[0386] In a preferred embodiment of the arithmetic decoder, 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) 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 the scaling factor used in the first scaling ); and / or where the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0387] In a preferred embodiment, the arithmetic decoder is configured to obtain the element RangeTabLPS[i][j] of the two-dimensional look-up table according to:
[0388]
[0389] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down 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 to perform a right shift of x and determines how many bits to shift to the right.
[0390] In a preferred embodiment, the arithmetic decoder is configured to: base its value on the combined variable or its scaled and / or rounded version. To calculate the sub-interval width value (R*p) k The calculation is performed by using its entries to include combinations of state variable values or their scaled and / or rounded versions. A one-dimensional lookup table (LUT4) of probability values for different intervals of the range of state variables will combine the state variable values (s) k (or its scaled and / or rounded version) Mapped to the combined probability value, and the coding interval size information (e.g., R) describing the size of the coding interval of the arithmetic code before the coded symbol is quantized to the quantization level; the product between the combined probability value and the quantization level is determined (either by looking up a pre-computed product or by multiplication).
[0391] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0392] In a preferred embodiment, the arithmetic decoder is configured to... This is used to quantize the encoded interval size information R, where u, v, and w are parameters.
[0393] In a preferred embodiment of this arithmetic decoder, the entries in the one-dimensional lookup table are updated according to the combined state variable values or their scaled and / or rounded versions. It increases and then decreases monotonically.
[0394] In a preferred embodiment of this arithmetic decoder, the state variable values or their scaled and / or rounded versions are used for combining them. The range of values has different intervals of equal size.
[0395] In preferred embodiments of the arithmetic decoder, entries of the one-dimensional look-up table monotonically decrease at a decreasing rate with increasing values of the combined state variable or a scaled and / or rounded version thereof .
[0396] 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.).
[0397] In preferred embodiments, the arithmetic decoder is configured to update the plurality of variable state values according to
[0398]
[0399] 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 a predetermined value range, (e.g., taking into account having a value range larger than ; i.e., is quasi-quantized to
[0400] for extreme values of , the value of may deviate from its value range according to the above equation by being modified by the unmodified A; to avoid this, 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).
[0401] In preferred embodiments, the arithmetic decoder is configured to derive
[0402] Embodiments according to the present application create an arithmetic decoder for decoding a plurality of symbols having signed values (e.g., binary values), wherein the arithmetic decoder is configured to determine one or more state variable values (s1 k , s2 k), 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., in case a plurality of state variable values are determined, statistics with different adaptation time constants), and wherein the arithmetic decoder is configured to update the first state variable value (s i k ) based on the decoded symbol and using a look-up table (A) (e.g., after decoding the decoded symbol) depending on whether the decoded symbol takes a first value or a second value different from the first value. k , R*p k ), 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., in case a plurality of state variable values are determined, statistics with different adaptation time constants), wherein the arithmetic decoder is configured to update the first state variable value (s k 1) based on the decoded symbol and using a look-up table (A) (e.g., after decoding the decoded symbol) depending on whether the decoded symbol takes a first value or a second value different from the first value.
[0403] In a preferred embodiment, the arithmetic decoder is configured to update the second state variable value (s k 2) based on the decoded symbol and using said look-up table (A) (e.g., after decoding the decoded symbol) depending on whether the decoded symbol takes a first value or a second value different from the first value.
[0404] 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.
[0405] In a preferred embodiment, the arithmetic decoder is configured to selectively increase or decrease a previous state variable value by a value determined using a look-up table depending on whether the decoded symbol takes a first value or a second value different from the first value.
[0406] In a preferred embodiment, the arithmetic decoder is configured to increase the previous state variable value by a relatively large value when the previous state variable value is negative compared to being positive in case the decoded symbol takes the first value; and wherein the arithmetic decoder is configured to decrease the previous state variable value by a relatively large value when the previous state variable value is positive compared to being negative in case the decoded symbol takes the second value different from the first value (this is obtained for example by a suitable selection of the look-up table).
[0407] In a preferred embodiment, the arithmetic decoder is configured to update the first state variable value (s 1) depending on a predetermined (e.g., fixed) offset value (z) and the previously calculated first state variable value (s 1) if the decoded symbol takes the first value. The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the first state variable; and the arithmetic decoder is configured to determine, if the decoded symbol takes a second value, the version of the first state variable value that depends on a predetermined (e.g., fixed) offset value (z) and is inverted (multiplied by -1) by the previously calculated value of the first state variable. Or a scaled and / or rounded version thereof (e.g., a negated version of the previously calculated first state variable value). The index of the entry in the lookup table evaluated when updating the value of the first state variable by summing the values of the first state variable.
[0408] In a preferred embodiment, the arithmetic decoder is configured such that if the decoded symbol takes a first value, it depends on a predetermined (e.g., fixed) offset value (z) and a previously calculated second state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the second state variable; and the arithmetic decoder is configured to, if the decoded symbol takes a second value, depend on a predetermined (e.g., fixed) offset value (z) and the inverse (multiplied by -1) version of the previously calculated value of the second state variable. Or its scaled and / or rounded version (e.g., a negated version of the previously calculated second state variable value). The sum of these values determines the index of the entry in the lookup table evaluated when updating the value of the second state variable.
[0409] In a preferred embodiment, the arithmetic decoder is configured to apply a first scaling value (m) when determining the index of the entry in the lookup table evaluated when updating the value of the first state variable. k 1), based on the previously calculated first state variable value (s) k 1) Scaling is performed, wherein the arithmetic decoder is configured to apply a second scaling value (m) when determining the index of the entry of the lookup table evaluated when updating the value of the second state variable. k 2), to the previously calculated value of the second state variable (s) k 2) Scaling is performed, 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 integers of 2, and wherein the ratio between the first scaling value and the second scaling value is preferably an integer of 2, wherein the first scaling value and the second scaling value preferably differ by a factor of at least 8).
[0410] In a preferred embodiment, the arithmetic decoder is configured to use a first scaling value (e.g., n) when updating the value of the first state variable. k 1) Scale the values returned by the evaluation through the lookup table.
[0411] wherein the arithmetic decoder is configured to use a second scaling value (e.g., n k 2) scaling the value returned by the evaluation of the look-up table, wherein the first scaling value is different from the second scaling value.
[0412] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0413]
[0414] 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.
[0415] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0416]
[0417] 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.
[0418] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0419]
[0420] 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.
[0421] In a preferred embodiment, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0422]
[0423] 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.
[0424] In a preferred embodiment of this arithmetic decoder, the entries for A decrease monotonically as the lookup table index increases.
[0425] In a preferred embodiment of this arithmetic decoder, A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) With large The range of values; that is, Quantized to
[0426] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or set to zero; where offset, and These are predefined parameters (examples have been provided above).
[0427] In a preferred embodiment of the arithmetic decoder, the last entry in the lookup table (when the first state variable value extends to a predetermined range of maximum allowable values or when the first state variable value exceeds a predetermined threshold) is equal to zero.
[0428] In a preferred embodiment, the arithmetic decoder is configured to apply a limiting operation to update the state variable value so that the updated and limited state variable value remains within a predetermined range.
[0429] In a preferred embodiment, the arithmetic decoder is configured to apply the amplitude limiting operation according to the following formula.
[0430]
[0431] To update the value of the state variable, where, It is used for The maximum allowed value, and where, It is used for The minimum allowed value.
[0432] 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 is different between two different context models).
[0433] In a preferred embodiment, the arithmetic decoder is configured to obtain interval size information as defined in one of the above embodiments.
[0434] 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 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 subinterval width value (R LPS ) 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 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 a scaled and / or rounded version thereof onto a combined probability value and quantizing a 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).
[0435] 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 0 and 1) having different adaptation time constants, e.g. in case of a plurality of state variable values for statistics having different adaptation time constants.
[0436] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of state variable values in order to obtain the combined state variable value.
[0437] In a preferred embodiment, the arithmetic decoder is configured to determine a sum of rounding values obtained by rounding a product of a state variable value and an associated weighting value in order to obtain the combined state variable value (s k ).
[0438] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value sk :
[0439]
[0440] wherein s k 2 is 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 combined state variable value) (wherein d k i is preferably an integer value power of 2, and wherein the ratio between two different d k i is preferably an integer value power of 2) [wherein the ratio between two different d k i is preferably larger than or equal to 8).
[0441] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value
[0442]
[0443] 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 by being set to zero or being scaled down to avoid an updated to deviate from its value range, (e.g. considering to have 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 by being modified by the unmodified A; to avoid this scenario, 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).
[0444] In a preferred embodiment, the arithmetic decoder is configured to derive
[0445] In preferred embodiments, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0446]
[0447] where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighting values; where is one or more weighting values.
[0448] In preferred embodiments, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0449]
[0450] where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighting values; where is one or more weighting values.
[0451] In preferred embodiments, the arithmetic decoder is configured to determine the one or more updated state variable values according to
[0452]
[0453] where A is a lookup table (e.g., comprising integer values), where z is a predetermined (constant) offset value; where is one or more weighting values; where is one or more weighting values.
[0454] In preferred embodiments, 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.
[0455] In preferred embodiments, the arithmetic decoder is configured to perform quantization of the coding interval size information R by where u, v and w are parameters.
[0456] In preferred embodiments of the arithmetic decoder, the entries of the one-dimensional lookup table monotonically decrease with an increase of one state variable value or a scaled and / or rounded version thereof .
[0457] In preferred embodiments of the arithmetic decoder, where the entries of the one-dimensional lookup table monotonically decrease with an increase of one state variable value or a scaled and / or rounded version thereof the different value intervals of the value range of the state variable have equal size.
[0458] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional look-up table monotonously decrease at a decreasing rate with increasing values of a state variable or a scaled and / or rounded version thereof
[0459] 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 providing an encoded binary sequence based on a sequence of binary values representing video content.
[0460] 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.
[0461] 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.
[0462] The video decoder is based on the same considerations as the video encoder. Thus, the above explanations apply as well, wherein the encoded symbols or the symbols to be encoded correspond to the decoded symbols.
[0463] Furthermore, it is noted that respective methods and computer programs are created according to further embodiments of the present application.
[0464] An embodiment according to the present application creates a method for encoding a plurality of symbols having symbol values, e.g. binary values, wherein the method comprises providing a plurality of state variable values (si k deriving interval size information (p k , R*p k ) for arithmetic coding of one or more symbol values to be encoded based on a plurality of state variable values (s k 1) or scaled and / or rounded versions thereof and mapping a second state variable value (s k 2) or scaled and / or rounded versions thereof using a look-up table (LUT1) in order to obtain said interval size information (e.g. p k or R*p k ) describing an interval size for arithmetic coding of one or more symbols to be encoded.
[0465] A method for encoding 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 interval size information (p i k ) for arithmetic coding 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 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 scaled and / or rounded versions thereof using a look-up table in order to obtain said interval size information (e.g. p k or R*p k ) describing an interval size for arithmetic coding of one or more symbols to be encoded.
[0466] A method for encoding a plurality of symbols having symbol values (e.g. binary values) is created according to embodiments of the present invention, wherein the method comprises determining one or more state variable values (s1 k , s2 k), 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), and wherein the method comprises deriving interval size information (p i k ) for arithmetic encoding of one or more symbol values to be encoded based on the plurality of state variable values (s k , R*p k ), 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), wherein the method comprises updating the first state variable value (s k 1) depending on the symbol to be encoded and using a look-up table (A) (e.g., after encoding the symbol to be encoded).
[0467] 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 k k ) for arithmetic decoding of one or more symbol values to be decoded based on a plurality of state variable values (s i , R*p k ), the plurality of state variable values representing statistics 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., an estimate of a probability of certain symbol values comprising the one or more symbol to be decoded), wherein the method comprises mapping the first state variable value (s k 1) or a scaled and / or rounded version thereof and mapping the 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 (e.g., p k or R*p k ) describing an interval size for arithmetic decoding of the one or more symbol to be decoded.
[0468] 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 k k(These multiple state variable values, for example, are associated with a given context pattern 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 multiple state variable values represent statistics based on multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants (e.g., estimates of the probability that one or more symbols to be decoded include certain symbol values), wherein the method includes a statistical approach based on multiple (individual) state variable values (s i k To derive the combined state variable values (s) k (For example, it could be a weighted sum of state variable values), and wherein the method includes using a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) that describes the interval size used for arithmetic decoding of one or more symbols to be decoded. k or R*p k ).
[0469] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes determining one or more state variable values (s k 1,s k 2) The one or more state variable values represent statistics (e.g., an estimate of the probability that one or more symbols to be decoded include certain symbol values) of multiple previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., statistics for different adaptation time constants when multiple state variable values are determined), and wherein the method includes basing the results on one or more state variable values (s i k (For example, associated with a given context pattern, 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 one or more state variable values represent statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants when multiple state variable values are determined), wherein the method includes updating the first state variable value (s) based on the decoded symbol and using a lookup table (A). k 1).
[0470] An embodiment of the present invention provides a method executed by an encoder and a decoder according to one of the above embodiments.
[0471] An embodiment according to the invention creates a computer program for performing the method according to one of the above embodiments when the computer program runs on a computer.
[0472] An embodiment according to the invention 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 look-up table (BaseTabLPS) (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 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 look-up 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 look-up table; and wherein the method comprises using the interval size value (R LPS ) for performing the arithmetic coding of the one or more symbols.
[0473] An embodiment according to the invention 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), (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 multiple 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., an element 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 multiple 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) is different from the given coding interval size; and wherein the method comprises using the interval size value (R LPS ) to perform the arithmetic coding of the one or more symbols.
[0474] 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 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 ), which represent 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 the interval size value (R LPS ) using a base lookup table (BaseTabLPS) (the size of the base lookup table in terms of probability indices is smaller than the number of possible probability indices i), 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 (R PS ) to perform the arithmetic decoding of the one or more symbols.
[0475] 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 an interval size value (R i k(e.g. associated with a given context mode, indicated by index k) to derive an interval size value (R LPS ) for the arithmetic decoding of one or more symbol values to be decoded, the one or more state variable values representing statistics of a plurality of previously decoded symbol values (e.g. sequences of binary values 0 and 1) (e.g. with different adaptation time constants); wherein the method comprises determining the 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
[0476] An embodiment according to the invention creates a computer program for performing, when the computer program runs on a computer, a method according to one of the above embodiments.
[0477] The above method is based on the same considerations as the above apparatus. It is noted, however, 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 described features, functions and details, individually or in combination. The same applies to the computer program. BRIEF DESCRIPTION OF DRAWINGS
[0478] Embodiments according to the invention will be described below with reference to the accompanying drawings, in which:
[0479] Figure 1 A schematic block diagram of an apparatus for predictive encoding of pictures in a data stream according to an embodiment of the invention is shown;
[0480] Figure 2 A schematic block diagram of a decoder according to an embodiment of the invention is shown;
[0481] Figure 3a schematic representation showing the relationship between the reconstructed signal and the combination of the prediction residual and the prediction signal;
[0482] Figure 4 a schematic block diagram of an arithmetic encoder according to an embodiment of the application is shown;
[0483] Figure 5 a schematic block diagram of an arithmetic decoder according to an embodiment of the application is shown;
[0484] Figure 6 a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0485] Figure 7 a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0486] Figure 8 a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0487] Figure 9 a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0488] Figure 10a and Figure 10b a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0489] Figure 11 a schematic representation of a concept for determining interval size information according to an embodiment of the application is shown;
[0490] Figure 12 a schematic representation of a concept for determining one or more update state variables according to an embodiment of the application is shown;
[0491] Figure 13 a schematic representation of a concept for determining interval size values according to an embodiment of the application is shown;
[0492] Figure 14 a schematic representation of a concept for determining interval size values according to an embodiment of the application is shown;
[0493] Figure 14 a schematic representation of a concept for determining interval size values according to an embodiment of the application is shown;
[0494] Figure 15 a schematic representation of a concept for determining interval size values according to an embodiment of the application is shown;
[0495] Figure 16 a schematic representation of a video decoder according to an embodiment of the application is shown; and
[0496] Figure 17 a schematic representation of a video decoder according to an embodiment of the application is shown. DETAILED DESCRIPTION
[0497] 1. According to Figure 1 encoder
[0498] The following description of the drawings begins with a description of an encoder (10) and a decoder (20) of a block-based predictive codec for encoding pictures of a video in order to form an example of an encoding frame structure in which embodiments of the application can be built. With respect to Figure 1 Various encoders and decoders are described. In the following, a description of embodiments of the inventive concept is presented as well as a description of how such a concept can be built into an encoder and a decoder, respectively, although the embodiments described later on and thereafter can also be used to form encoders and decoders that do not operate in accordance with the encoding frame structure underlying the encoder and decoder of Figure 2 and Figures 1 to 3 A description of various encoders and decoders is given. In the following, a description of embodiments of the inventive concept is presented as well as a description of how such a concept can be built into an encoder and a decoder, respectively, although the embodiments described later on and thereafter can also be used to form encoders and decoders that do not operate in accordance with the encoding frame structure underlying the encoder and decoder of Figure 1 and Figure 2 A description of various encoders and decoders is given. In the following, a description of embodiments of the inventive concept is presented as well as a description of how such a concept can be built into an encoder and a decoder, respectively, although the embodiments described later on and thereafter can also be used to form encoders and decoders that do not operate in accordance with the encoding frame structure underlying the encoder and decoder of Figure 4 and Figure 1 A description of various encoders and decoders is given. In the following, a description of embodiments of the inventive concept is presented as well as a description of how such a concept can be built into an encoder and a decoder, respectively, although the embodiments described later on and thereafter can also be used to form encoders and decoders that do not operate in accordance with the encoding frame structure underlying the encoder and decoder of Figure 2 and
[0499] Embodiments according to the application can comprise video encoders and video decoders as described with respect to Figure 1 and Figure 2 Moreover, any of the concepts disclosed herein can be used in an entropy encoder 34 or an entropy decoder 50 as described with reference to Figure 1 and Figure 2
[0500] Figure 1 An apparatus for predictively encoding a picture 12 into a data stream 14 using, exemplarily, transform-based residual coding is shown. The reference numeral 10 is used to indicate the apparatus or encoder. Figure 2 A corresponding decoder 20, i.e. an apparatus 20 configured to predictively decode a picture 12' from the data stream 14 also using transform-based residual decoding is shown, 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, transform-based prediction residual coding is used, although embodiments of the present application are not limited to such prediction residual coding. With respect to Figure 1 and Figure 2 The same applies to other details described, as will be outlined in the following.
[0501] 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.
[0502] 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 original 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 original 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 outlined in Figure 2 the prediction stage 36 can internally comprise, as shown in Fig. 1, a dequantizer 38 dequantizing the prediction residual signal 24" in order to obtain a spectral domain prediction residual signal 24'", which corresponds to the signal 24' except for a quantization loss, a reverse transformer 40 following the dequantizer subjecting the latter prediction residual signal 24'" to an inverse transform, i.e. a spectral-to-spatial transform, in order to obtain a prediction residual signal 24"" corresponding to the original prediction residual signal 24 except for the quantization loss. A combiner 42 of the prediction stage 36 then recombines the prediction signal 26 and the prediction residual signal 24"" such as by addition in order to obtain a reconstructed signal 46, i.e. a reconstruction of the original signal 12. The reconstructed signal 46 can correspond to the signal 12'. A prediction module 44 of the prediction stage 36 then generates the prediction signal 26 on the basis of the signal 46 by using for example spatial prediction, i.e. intra picture prediction, and / or temporal prediction, i.e. inter picture prediction.
[0503] 2. According to Figure 2 decoder
[0504] Likewise, as outlined in the foregoing, the decoder 20 can internally 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 original 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 original signal, i.e. from the picture 12'. The decoder 20 then further comprises a transformer 28' subjecting the prediction residual signal 24' to a spectral-to-spatial transform in order to obtain a spectral domain prediction residual signal 24", which is then subjected to dequantization by a dequantizer 38' also comprised by the decoder 20. The prediction signal 26' is generated by a prediction stage 36' of the decoder 20 on the basis of the prediction residual signal 24" dequantized from the data stream 14. To this end, as outlined in Figure 3As shown in FIG. 2, decoder 20 can internally be composed of components corresponding to and interconnected in a manner corresponding to prediction stage 36. In particular, entropy decoder 50 of decoder 20 can entropy decode quantized spectral domain prediction residual signal 24" from the data stream, after which dequantizer 52, inverse transformer 54, combiner 56, and prediction module 58 interconnected and operating in the manner described above with respect to the modules of prediction stage 36 recover a reconstructed signal based on prediction residual signal 24" so that as Figure 3 As shown in FIG. 2, the output of combiner 56 produces the reconstructed signal, i.e., picture 12'.
[0505] Although not specifically described above, it will be 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 for example 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 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 an offset of the plane defined by neighboring samples driving the slopes and the offset. In contrast thereto, for example, inter coded blocks can be predicted in time. For inter coded blocks, a motion vector can be signaled within the data stream that indicates a spatial displacement of a portion of a previously coded picture of the video to which the picture 12 belongs that is 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 a quantized spectral domain prediction residual signal 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.
[0506] 3. According to Figure 3 Functionality 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 into blocks 84 is illustrated in FIG. 2. The subdivision of the picture area into blocks 84 is illustrated in FIG. 2 as a subdivision of the picture area into intra coded blocks and inter coded blocks, which are exemplarily indicated by hatching and non-hatching, respectively. The subdivision can be any subdivision, such as a regular subdivision of the picture area into rows and columns of square or non-square blocks, or a multi-tree subdivision of the picture 12 from a tree root block into a plurality of leaf blocks having different sizes, such as a quad-tree subdivision, etc., wherein, Figure 3 The mixing thereof is illustrated in Figure 3 In FIG. 2, 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.
[0507] Again, the data stream 14 can have an intra coding mode in which the intra coded blocks 80 are coded, which assigns one of a number of 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 portion other than the current picture 12, such as a previously coded picture of a 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 adjustable encoders and decoders, respectively.
[0508] Figure 3 The prediction residual signal 24" in FIG. 2 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.
[0509] 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.
[0510] 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:
[0511] o DCT-II (or, alternatively, DCT-III), where DCT stands for discrete cosine transform
[0512] o DST-IV, where DST stands for discrete sine transform
[0513] o DCT-IV
[0514] o DST-VII
[0515] o Identity transform (IT)
[0516] 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:
[0517] o inverse DCT-II (or, alternatively, inverse DCT-III)
[0518] o Inverse DST-IV
[0519] o Inverse DCT-IV
[0520] o Inverse DST-VII
[0521] o Identity Transform (IT)
[0522] 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.
[0523] As mentioned above, it has been presented that Figure 2 As an example, in which 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 the 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 the 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.
[0524] 4. According to Figure 4 Arithmetic encoder
[0525] Figure 4 A schematic block diagram of an arithmetic encoder according to embodiments of the present application is shown.
[0526] 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.
[0527] 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.
[0528] 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.
[0529] 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).
[0530] 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).
[0531] 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.
[0532] 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).
[0533] 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.
[0534] 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.
[0535] 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.
[0536] 5. The arithmetic decoder of claim 1, wherein the context model is a probability model. 5 Figure 6 of claim 1,
[0537] 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.
[0538] 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).
[0539] 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.
[0540] 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.
[0541] 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.
[0542] In general, the arithmetic decoder 500 described herein can be supplemented, individually and in combination, by any of the features, functionality, and details disclosed herein.
[0543] 6. The concept for determining interval size information according to Figure 4 claim 5
[0544] Figure 5 A schematic representation of a concept for determining interval size information is shown, which can be used in the arithmetic encoder 400 according to Figure 7 or in the 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.
[0545] 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.
[0546] 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 lookup 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 the 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.
[0547] 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.
[0548] 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.
[0549] 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.
[0550] 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.
[0551] 7. The interval size determination concept according to Figure 7 claim 6
[0552] 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 an updated state variable 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 an updated state variable 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.
[0553] The interval size determination 700, which can be seen as an "interval size determination kernel", receives an updated state variable 710, which may, for example, correspond to the updated state variable 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.
[0554] The interval size determination 700 provides interval size information 720, which can correspond to the interval size information 620.
[0555] Thus, the interval size determination 700 may, for example, replace the interval size determination kernel 650 described in Figure 8
[0556] In the following, some details of the interval size determination kernel 700 will be described.
[0557] It should be noted that the interval size determination kernel 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 (optionally) scaling / rounding 732, wherein the first update state variable (e.g., It is scaled and / or rounded. For example, the scaling factor. This can be used for scaling the first updated state variable (value). For example, the scaling could be multiplying by a scaling factor. For example, the rounding could be rounding down to the next integer value, which is less than or equal to the scaling result. Similarly, the first processing path 730 may include a second (optional) scaling / rounding 734, which may include, for example, using a corresponding scaling factor (e.g., ) to scale the second updated state variable (e.g., The scaling and rounding state variable 733 and the second scaling and rounding state variable 735 can be obtained. Furthermore, the first processing path 730 may include a mapping 736 based on a first lookup table, which receives the updated state variable 733 of the first scaling and / or rounding and further receives quantized encoding interval size information 762. For example, the mapping 736 based on the first lookup table can use a two-dimensional lookup table to obtain the first interval size contribution 737. Similarly, the first signal processing path 730 may include a mapping 738 based on a second lookup table, which can receive the updated state variable 735 of the second scaling and / or rounding and the quantized encoding interval size information 762 and provide a second interval size contribution 739 based on the updated state variable of the second scaling and / or rounding and the quantized encoding interval size information.
[0558] 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.
[0559] 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.
[0560] 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.).
[0561] 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.
[0562] 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).
[0563] 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.
[0564] 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.
[0565] 8. According to Figure 8 The size of the interval determines the kernel
[0566] 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.
[0567] 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.
[0568] 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.
[0569] In the following, some details regarding the functionality of the interval size determination core 800 will be described.
[0570] 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.
[0571] 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.
[0572] 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 presence of 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.
[0573] 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 among 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.
[0574] 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 RangeTableLPS described herein, and / or the mapping mechanism can be based on the look-up table BaseTableLPS described herein and / or the mapping mechanism can use the look-up table ProbTableLPS described herein. Optionally, the scaling function Scal(.) described herein can also be used in the mapping 870.
[0575] 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 i.
[0576] 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., RangeTableLPS).
[0577] 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 i, i.e., quantized to integer values, can be used.
[0578] As described above, the mapping 870 can be performed using different concepts described herein.
[0579] 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.
[0580] 9. The interval size determination core of claim Figure 9
[0581] 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.
[0582] 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.
[0583] 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.
[0584] Finally, the interval size information 920 is obtained based on the first probability value 942 and based on the second probability value 952.
[0585] 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.
[0586] However, it should be noted that 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. Figure 10b
[0587] 10. The method of claim 1, wherein the interval size determination is based on Figure 10a and Figure 10a
[0588] 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.
[0589] As can be seen, Figure 9 The 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, 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, 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 by the encoded 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 encoded interval associated with the less probable symbol or with the least probable symbol (or, alternatively, the size of the encoded 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.
[0590] Thus, the concept 1000 can implement the functionality as described with respect to Figure 10b the concept 1000 can implement the functionality as described with respect to Figure 10b the concept 1000 can implement the functionality as described with respect to
[0591] It is noted that the concept 1000 can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein.
[0592] Furthermore, the concept 1000 can optionally be supplemented, both individually and in combination, by any of the features, functionalities, and details disclosed herein.
[0593] 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.
[0594] 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))).
[0595] 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.
[0596] In summary, the concept 1080 according to Figure 11 may 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.
[0597] Further, it is noted that the concept 1080 can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein.
[0598] 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.
[0599] 11. According to Figure 12 The size of the interval determines the kernel
[0600] Figure 12 A schematic block diagram of an interval size determination core 1100 according to an embodiment of the application is shown.
[0601] 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.
[0602] 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.
[0603] 12. According to Figure 13 State variable update
[0604] 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 regarded 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.
[0605] Thus, the state variable update 1200 can provide one or more updated state variable values. If a plurality of updated state variable values is 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).
[0606] 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.
[0607] 13. According to Figure 8 The size of the interval determines the kernel
[0608] 14. Interval size determination kernel A schematic block diagram illustrating an interval size determination kernel 1300 according to embodiments of the application is shown.
[0609] 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.
[0610] 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.
[0611] 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.
[0612] 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.
[0613] 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.
[0614] 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
[0615] 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.
[0616] Furthermore, it is noted that, optionally, the coding interval size information (e.g., R) can be taken into account when selecting an entry of the base lookup table 1350 (e.g., if the base lookup table is a two-dimensional table). In another optional alternative, the coding interval size information (e.g., R) can be used to determine whether additional scaling (e.g., applied to the selected entry of the base lookup table) depending on the coding interval size information should be performed in order to obtain the interval size value 1320.
[0617] However, it is noted that the interval size determination kernel 1300 described herein can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein to derive an interval size value.
[0618] Furthermore, it is noted that the interval size determination kernel 1300 can optionally be supplemented by any of the features, functionalities, and details disclosed herein.
[0619] Figure 14
[0620] Figure 15 A schematic block diagram of an interval size determination kernel 1400 according to an embodiment of the present application is shown.
[0621] The interval size determination kernel 1400 receives one or more state variable values 1410, which can be, for example, updated state variable values. Furthermore, the interval size determination kernel 1400 provides an interval size value 1420 based on the one or more state variable values 1410.
[0622] The interval size determination kernel 1400 comprises a lookup table evaluation mechanism 1430, which receives a probability index 1432, which can be based on the one or more state variable values 1410, and which provides the interval size information or the interval size value 1420.
[0623] For example, the probability index 1432 can be derived from the one or more (updated) state variable values using a probability index derivation 1440.
[0624] For example, the one or more updated state variable values 1410 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 and / or a plurality of previously decoded symbol values.
[0625] 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.
[0626] 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).
[0627] 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.
[0628] 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).
[0629] 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.
[0630] 15. According to Figure 16 The size of the interval determines the kernel
[0631] Figure 16 A schematic block diagram illustrating an interval size determination core 1500 according to an embodiment of the present application is shown.
[0632] 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 .
[0633] 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 coding interval size information 1512 describing a size of a coding interval of an arithmetic encoding or an arithmetic decoding (e.g., prior to an arithmetic encoding of a symbol value to be encoded, or prior to an arithmetic decoding of a symbol value to be decoded) onto a quantization level. Thus, quantized coding 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 coding 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) coding 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.
[0634] 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.
[0635] 16. According to Figure 1 video decoder
[0636] Figure 17 A schematic block diagram of a video decoder 1600 according to an embodiment of the present application is shown.
[0637] 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.
[0638] 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.
[0639] 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.
[0640] 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.
[0641] 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).
[0642] 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.
[0643] 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).
[0644] 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.
[0645] However, it should be noted that this explanation of the arithmetic decoding core 1670 should only be considered a very short and general explanation. Details on the arithmetic decoding core can for example be found in the standards H.264 and H.265. However, it can also be seen from this literature that different concepts are used (for the operation of the arithmetic decoding core), and the details of the arithmetic decoding core are not particularly relevant to the present application.
[0646] However, in order to obtain suitable range values (allowing for high bit rate efficiency), the arithmetic decoder 1620 (or generally speaking, the video decoder) uses different window sizes to determine the two source statistics values 1632, 1642 (wherein the "window size" defines the degree of smoothing over a plurality of decoded binary values of the decoded binary sequence 1622). Furthermore, in order to increase the reliability of the range values provided to the arithmetic decoding core 1670, the first source statistics value 1632 and the second source statistics value 1642 are combined into a combined source statistics value 1652 in some embodiments.
[0647] Thus, it can be said that the video decoder 1600 provides for high efficiency, since the range values used by the arithmetic decoding core 1670 are well adapted to the actual probabilities of the bit values (e.g. the bit values "0" and "1" within the decoded binary sequence 1622).
[0648] As an additional remark, it should be noted that the video decoder 1600 can also be modified. In an alternative implementation, the second source statistics 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 statistics value 1632 with the fixed, non-zero value in order to obtain the combined source statistics value 1652. It has been found that such a simplification can lead to good results in some cases, and can for example avoid inappropriate strong variations of the combined source statistics value. In other words, by introducing a fixed contribution into the determination of the combined source statistics value, it can be achieved that the combined source statistics value can no longer deviate from this fixed value to a large extent. Thus, if by chance there is a long sequence of identical bit values within the decoded binary sequence 1622, some "hindsight" into the statistics of the decoded binary sequence can be used to avoid a strong degradation of the coding efficiency.
[0649] As an additional remark, it should be noted that the functionality of the arithmetic decoder (and of the individual blocks of the arithmetic decoder) can generally also be considered the functionality of the overall video decoder. In other words, functionality described herein as functionality of the arithmetic decoder can also be performed by other blocks of the video decoder.
[0650] Furthermore, it should be noted that, in accordance with Figure 17The video decoder 1600 can be supplemented by any of the features, functionalities and details described herein, both individually and in combination.
[0651] 17. According to Figure 17 video decoder
[0652] Figures 4 to 15 A schematic block diagram of a video decoder 1700 according to an embodiment of the present application is shown.
[0653] 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 can comprise, for example, 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.
[0654] In 18. Further embodiments Two main blocks of the video decoder 1700 are shown, namely an arithmetic decoder 1720 and a video reconstruction 1780. 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.
[0655] The arithmetic decoder 1720 receives the encoded representation of a binary sequence 1711. 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 of a binary sequence 1711, optionally taking into account some or all of the slice type information and the configuration information or control information.
[0656] 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 of a binary sequence 1711 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 of a binary sequence 1711. For this purpose, the arithmetic decoding core 1770 checks in which interval of a plurality of intervals a number represented by the encoded representation of a binary sequence 1711 lies. Depending on the decision in which interval of a plurality (at least two) of intervals the number represented by the encoded representation of a binary sequence 1711 lies, a certain bit value or group of bit values or symbol of the decoded binary sequence 1722 is identified.
[0657] For the purpose of deriving the decoded binary sequence 1722, the arithmetic decoding core receives information about the interval, which typically corresponds to some degree of probability of a bit value. In the current case, the arithmetic decoding core 1770 receives "range values" or "interval size information" 1762 for the interval subdivision (i.e. range values 1762 for defining the intervals of the number range to be used by the arithmetic decoding core 1770). Specifically, it is noted that the arithmetic decoding core 1770 can for example be similar or identical to an arithmetic decoding core used in a video encoder / decoder according to the standard H.264 or used in a video encoder / decoder according to the standard H.265. However, it is noted that different approaches for implementing the arithmetic decoding core 1770 can also be used.
[0658] In view of the above discussion, it is apparent that an important functionality of the arithmetic decoder 1720 is to provide the range values or interval size information 1762 defining the interval subdivision for the arithmetic decoding core 1770. Generally, 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.
[0659] In the arithmetic decoder 1700, two source statistic value determination blocks (or, units) 1730, 1740 are used (e.g. can correspond to state variable updates described herein). For example, the first source statistic value determination block 1730 receives one or more previously decoded binary values (or, sign values) of the decoded binary sequence 1722 (also denoted x t indicated), and provides a first source statistic value 1732 (can correspond to a first state variable value described herein) based on the one or more previously decoded binary values. The first source statistic value determination block can for example receive some configuration information (like constants or variables BITS a ), defining the number of bits used to represent the source statistic value 1732, and constants or variables n a defining a "window size" to be used by the source statistic value determination block 1730, and / or any other parameters described herein. For example, the first source statistic value determination block 1730 can determine the first source statistic value 1732 in a recursive manner, wherein the window size n a or the parameter n i k A weighting of the most recently decoded binary value of the decoded binary sequence 1722 is determined in the determination of the first source statistic value or first state variable value 1732.
[0660] 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 that 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.
[0661] Furthermore, the second source static value determination block 1740 performs similar operations when compared to the first source static value determination bl...
Claims
1. An arithmetic encoder (34; 400) for encoding multiple symbols (24"; 410) having sign values, in, The arithmetic encoder is configured to determine one or more state variable values (s1) k s2 k ;642, 644;710;810;910;1010a, 1010b;1082a, 1082b;1110;1210;1310;1410;1510;1632, 1642;1732, 1742), wherein the one or more state variable values represent statistics of multiple previously encoded symbol values, and The arithmetic encoder is configured to base its operation on the one or more state variable values (s). i k This is used to derive the interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k ;432;534;620;720;820;1020;1084;1120;1320;1420;1520;1662;1762), wherein the one or more state variable values represent the statistics of multiple previously encoded symbol values, The arithmetic encoder is configured to update the value of a first state variable (s) based on the symbol to be encoded and using a lookup table (A). k 1), The arithmetic encoder is configured to selectively increase or decrease the value of a previously calculated state variable using the lookup table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value; and Its features are, The arithmetic encoder is configured such that if the symbol to be encoded takes a first value, it depends on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The arithmetic encoder is configured such that if the symbol to be encoded takes a second value, it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The arithmetic encoder is configured to: when the previous state variable value is positive compared to when the symbol to be encoded takes a first value, increase the previous state variable value by a relatively large value when the previous state variable value is negative; and The arithmetic encoder is configured to reduce the value of the previous state variable by a relatively large amount when the previous state variable value is positive, compared to when the previous state variable value is negative when the symbol to be encoded takes a second value different from the first value.
2. An arithmetic decoder (50; 500; 1620; 1720) for decoding multiple symbols (24"; 520; 1622; 1722) with sign values, in, The arithmetic decoder is configured to determine one or more state variable values (s1) k s2 k ;642,644;710;810;910;1010a,1010b;1082a,1082b;1110;1210;1310;1410;1510;1632,1642;1732,1742), wherein the one or more state variable values represent statistics of multiple previously decoded symbol values, and The arithmetic decoder is configured to base its operation on the one or more state variable values (s). i k This is used to derive the interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously decoded symbol values. The arithmetic decoder is configured to update the value of the first state variable (s) based on the decoded symbol and using a lookup table (A). k 1), The arithmetic decoder is configured to selectively increase or decrease the previously calculated state variable value using the lookup table, depending on whether the decoded symbol takes a first value or a second value different from the first value; and Its features are, The arithmetic decoder is configured such that if the decoded symbol takes a first value, it depends on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The arithmetic decoder is configured such that if the decoded symbol takes a second value, it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The arithmetic decoder is configured to: when the previous state variable value is positive in the case of a decoded sign taking a first value, increase the previous state variable value by a relatively large value in the case of a negative value; and The arithmetic decoder is configured to reduce the value of the previous state variable by a relatively large amount when the previous state variable value is positive, compared to when the previous state variable value is negative when the decoded sign is different from the first value.
3. An encoder (10) for encoding audio content, video content, images, or neural network coefficients, in, The encoder is configured to encode audio content, video content, images, or neural network coefficients. The encoder includes an arithmetic encoder (34; 400) according to claim 1, which provides an encoded binary sequence (420) based on a sequence of binary values (410) representing audio content, video content, images, or neural network coefficients.
4. A decoder (20; 1600; 1700) for decoding audio content, video content, images, or neural network coefficients. in, The decoder is configured to decode audio content, video content, images, or neural network coefficients. The decoder includes the arithmetic decoder (50; 500; 1620; 1720) according to claim 2, wherein the arithmetic decoder provides the decoded binary sequence (24", 520; 1622; 1722) based on the encoded representation of the binary sequence (14; 510; 1610; 1710).
5. A method for encoding multiple symbols having sign values, in, The method includes: determining one or more state variable values (s1) k s2 k The one or more state variable values represent statistics of multiple previously encoded symbol values, and The method includes: based on the one or more state variable values (s) i k This is used to derive the interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously encoded symbol values. The method includes: updating the value of a first state variable (s) based on the symbol to be encoded and using a lookup table (A). k 1), The method includes: selectively increasing or decreasing a previously calculated state variable value using the lookup table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value; and Its features are, The method includes: if the symbol to be encoded takes a first value, then depending on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The method includes: if the symbol to be encoded takes a second value, then it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The method includes: when the previous state variable value is positive compared to the previous state variable value when the symbol to be encoded takes a first value, increasing the previous state variable value by a relatively large value when the previous state variable value is negative; and The method includes: when the previous state variable value is positive, reducing the previous state variable value by a relatively large value compared to when the previous state variable value is negative when the symbol to be encoded takes a second value different from the first value.
6. A method for decoding multiple symbols having sign values. in, The method includes: determining one or more state variable values (s1) k s2 k The one or more state variable values represent statistics of multiple previously decoded symbol values, and The method includes: based on the one or more state variable values (s) i k This is used to derive the interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously decoded symbol values. The method includes: updating the value of a first state variable (s) based on the decoded symbol and using a lookup table (A). k 1), The method includes: selectively increasing or decreasing the previously calculated state variable value using the lookup table, depending on whether the decoded symbol takes a first value or a second value different from the first value; and Its features are, The method includes: if the decoded symbol takes a first value, then depending on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The method includes: if the decoded symbol takes a second value, then depending on the inverted version of the predetermined offset value multiplied by -1 of the previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The method includes: when the previous state variable value is positive compared to the previous state variable value when the decoded symbol takes a first value, increasing the previous state variable value by a relatively large value when the previous state variable value is negative; and The method includes: when the value of the previous state variable is positive, reducing the value of the previous state variable by a relatively large amount compared to when the value of the previous state variable is negative when the decoded symbol is a second value different from the first value.
7. A computer-readable medium storing a computer program, wherein, The computer program executes the method according to claim 5 or 6 when it is run on a computer.
Citation Information
Patent Citations
Method for variable length coding and apparatus
CN102460976A
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
Context initialization in entropy coding
CN103733622A
Audio encoder, audio decoder, method for encoding and audio information, method for decoding an audio information and computer program using a hash table describing both significant state values and interval boundaries
WO2011086065A1
