Arithmetic encoder, arithmetic decoder, video encoder, video decoder, encoding method, decoding method, and computer program
Through the multivariate arithmetic encoder, the problem of low adjustment efficiency of symbol probability change in video and audio encoding is solved, and efficient coding and low-complexity coding scheme is realized.
Patent Information
- Application Number
- JP2024198761
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2024-11-14
- Publication Date
- 2025-01-30
AI Technical Summary
The prior art is difficult to efficiently adjust the symbol probability changes in video and audio encoding, resulting in poor encoding efficiency, and the existing methods have high computational complexity and large resource requirements.
Using a multivariate arithmetic encoder, using lookup table and state variable mapping, the symbol interval information is efficiently determined through the mapping and scaling of two state variables, reducing resource requirements and computing complexity.
It realizes efficient adjustment of symbol probability changes in video and audio encoding, reducing calculation complexity and resource requirements, while maintaining encoding efficiency.
Smart Images

Figure 2025015642000001_ABST
Abstract
Description
[Technical field]
[0001] An embodiment in accordance with the present invention creates an arithmetic encoder. A further embodiment in accordance with the present invention creates an arithmetic decoder. A further embodiment according to the present invention creates a video encoder. A further embodiment according to the present invention creates a video decoder. Further embodiments according to the invention create a method for encoding a plurality of symbols and a method for decoding a plurality of symbols. A further embodiment according to the invention creates a corresponding computer program. Generally speaking, embodiments in accordance with the present invention create a method for updating a context model using a finite state machine. [Background technology]
[0002] Arithmetic coding and decoding has proven to be a valuable tool in the coding and decoding of audio and video content, as well as in coding other types of information, such as images, neural network coefficients, etc. Embodiments of the present invention can be used in all these applications. For example, it is possible to exploit known probabilities of occurrence of binary values (e.g., symbols) in a binary sequence representing video or audio content (or other types of content) to increase the efficiency of the coding. In particular, arithmetic coding can efficiently handle different probabilities of "0" and "1" and can be fine-tuned to adapt to changing probabilities.
[0003] However, to achieve optimal coding efficiency in arithmetic encoding and decoding, it is important to have adequate information about the probabilities of "0" and "1" that closely reflect their actual occurrence frequency.
[0004] To accommodate the probabilities of "0" and "1" (or in general, to accommodate the probabilities of the symbols to be coded), the concept is usually used to adjust the boundaries of intervals within the total (current) range of values, obtaining subdivisions of the intervals (e.g. so that the total range of values is subdivided into intervals associated with different binary values or groups of binary values).
[0005] In other words, information about the probabilities of various symbols (such as "0" and "1") is used to derive interval size information (or equivalently interval size values) that represent the widths of the intervals associated with the symbols (the total interval width may change over time depending on the encoding or decoding process, e.g., due to interval renormalization). Summary of the Invention [Problem to be solved by the invention]
[0006] Therefore, a concept is needed for determining source statistics (e.g., state variable values) and / or range values (such as interval size values) for interval subdivisions (e.g., subdivisions of the sum of coding intervals), which provides an appropriate trade-off between computational efficiency and responsibility. [Means for solving the problem]
[0007] An embodiment in accordance with the present invention creates an arithmetic encoder for encoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic encoder comprising interval size information (p k , R*p k ) is expressed as a set of state variables (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of a number of symbol values (e.g., sequences of binary values 0 and 1) previously encoded with different adaptive time constants, and the arithmetic encoder is configured to derive a first state variable value (s k1), or a scaled and / or rounded version thereof ([s k 1*a k 1]) and uses a lookup table (LUT1) to map the second state variable value (s k 2), or a scaled and / or rounded version thereof ([s k 2*a k 2]), and interval size information (e.g., p k or R*p k ) to be obtained.
[0008] This embodiment according to the invention is based on the idea that the interval size information can be obtained with particularly good reliability if the lookup table based mapping 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 (e.g. symbol probabilities) at different time scales, the interval size information can be obtained in an efficient manner (since only one lookup table is required) and yet reliable (since the determination of the interval size information takes into account statistics at various time scales). The mapping of the state variable values using the lookup table can be considered as an important and immediate step in deriving the interval size information based on the state variable values. Optionally, one or more additional mappings and / or combinations of mapping results can follow the lookup table based mapping of the first and second state variable values in the derivation of the interval size information. Optionally, a probability value can be obtained as an intermediate quantity using the lookup table based mapping of the first and second state variable values. Furthermore, different concepts for deriving interval size information from the result of the look-up table-based mapping of the first state variable values and from the result of the look-up table-based mapping of the second state variable values are possible.
[0009] In conclusion, this embodiment according to the invention provides for derivation of 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 separately but using the same mapping rule (defined in the lookup table) to keep resource demands for determining the interval size information reasonably low, but still allowing for consideration (e.g. weighting consideration) of statistics (or statistical information) of multiple previously processed (e.g. encoded or decoded) symbols obtained with different adaptation or statistical calculation time constants.
[0010] In a preferred embodiment, the arithmetic encoder uses a lookup table to determine the first state variable value, or a scaled and / or rounded version thereof ([s k 1*a k 1]) as the first probability value (p k 1 ), and the arithmetic encoder is configured to map the second state variable value, or a scaled and / or rounded version thereof ([s k 2*a k 2]) as the second probability value (p k 2 ), and the arithmetic encoder is configured to use the first probability value and the second probability value (e.g., using a weighted sum or weighted average) to obtain a joint probability value (pk).
[0011] Using such a concept, a joint probability value representing a symbol probability (e.g., the probability of a "1" symbol or the probability of a "0" symbol) can be easily derived based on the first state variable value and the second state variable value. For example, a first state variable value following a previously processed (e.g., encoded or decoded) symbol with a first agility can be efficiently mapped to a first probability value, and a second state variable value following a previously processed (e.g., encoded or decoded) symbol with a second agility can be efficiently mapped to a second probability value. Thus, it is possible to take into account trends of previously processed symbols occurring at different time scales and still derive the joint probability value in a very efficient manner. The first and second state variable values allow tracking trends of previously processed symbols with different adaptation time constants, and the mapping of state variable values to "partial" probability values (first probability value and second probability value) contributing to the joint probability value can be performed in a very resource-efficient manner using the above concept.
[0012] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value in a first direction (e.g., more positive) if the symbol to be encoded has a first value (e.g., “1”) and to change the state variable value in a second direction (e.g., more negative) if the symbol to be encoded has a second value (e.g., “0”) different from the first value (e.g., such that the state variable value can have positive and negative values), and the arithmetic encoder is configured to convert the absolute value (s k i >0 then s k i , otherwise -s k i ) (e.g., in response to a scaled and rounded version of the absolute value of the state variable value).
[0013] The efficiency of the concept can be further improved by using state variable values that can take positive and negative values (e.g., depending on the history of previously processed symbols and, e.g., symmetrically with respect to previously processed opposite symbols) and by selecting look-up table entries that depend on the absolute value of the respective state variable values. For example, it is no longer necessary to have a dedicated look-up table entry for each possible value (or quantized value) of a state variable value. Rather, a look-up table entry can be used doubly for both a positive state variable value and the corresponding negative state variable value (i.e., an "inverse" state variable value with equal absolute value but opposite sign). As a result, the number of look-up table entries can be kept small and the "symmetry" of the determination of the interval size information with respect to previously processed opposite symbols can be exploited.
[0014] In a preferred embodiment, the arithmetic encoder is configured to generate a first probability value (p k 1) to values provided by a lookup table (e.g., TIFF2025015642000002.tif632), and the arithmetic encoder is configured to set a first probability value (p k 1) from a predetermined value (e.g., 1) to a value provided by a lookup table (e.g., TIFF2025015642000003.tif643).
[0015] Using such a mechanism, the number of lookup table entries can be kept low (e.g., because the lookup table entries are selected solely based on the absolute value of the respective state variable value), while still being able to obtain the "complementary" probability values of opposite signs for each state variable value. Thus, a high degree of resource efficiency and low computational complexity is achieved for determining the probability values. In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000004.tif1382LUT1 is a lookup table containing probability values, [.] is the floor operator, s k i is the value of the i-th state variable, a k i is a weighting value associated with the i-th state variable value (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby allowing two or more probability values p k i The method is configured to determine: Such calculations have been shown to be computationally efficient, keeping resource demands reasonably small.
[0016] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000005.tif1398LUT1 is a lookup table containing probability values, [.] is the floor operator, s k i is the value of the i-th state variable, a k i is a weighting value associated with the i-th state variable value (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby allowing two or more probability values p k i The method is configured to determine: Such a calculation has been found to be advantageous in some circumstances, depending on the actual number representation. In particular, the floor operator is applied to the same operands, regardless of the sign of the state variable values. In particular, the signs of the floor operator's operands do not need to be removed, reducing some computational complexity. Rather, the negation is applied only to the result of the floor operator, which is usually an integer value. Thus, the complexity of applying the negation operator is particularly low. In other words, the concepts described herein also result in a particularly low degree of complexity.
[0017] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000006.tif1631 where N is the number of probability values considered (which may be equal to the number of state variable values considered), and b k i is a weighting value (e.g., a weighting coefficient that controls the influence of individual state variable values on the joint probability value) (b k i is preferably the integer value of von 2, and two different b k i The ratio between is preferably an integer value of 2. According to this, multiple probability values p k i Based on the joint probability value p k The method is configured to obtain By applying different weightings to the probability values obtained based on different state variable values, the different influences of short-term and long-term statistics on the joint probability value can be taken into account and particularly meaningful joint probability values can be obtained.
[0018] In a preferred embodiment, the arithmetic encoder uses a two-dimensional lookup table to calculate the first state variable value, or a scaled and / or rounded version thereof ([s k 1*a k 1]) to the first subinterval width value (R*p k1), whose entries are addressed in dependence on the first state variable value (e.g., to determine a first lookup table entry coordinate, such as by using a probability index i) and in dependence on coding interval size information (e.g., R, or an index j derived from R) describing a size of a coding interval of an arithmetic coding before encoding of a symbol (e.g., to determine a second lookup table entry coordinate), the arithmetic encoder uses a two-dimensional lookup table to map the second state variable value, or a scaled and / or rounded version thereof ([s k 2*a k 2]) to the second subinterval width value (R*p k 2), whose entries are addressed (e.g., to determine the first lookup table entry coordinates) in dependence on the second state variable value (e.g., to determine the first lookup table entry coordinates) and in dependence on coding interval size information (e.g., R) describing a size of a coding interval of the arithmetic coding before encoding of the symbol, and the arithmetic encoder is configured to use the first subinterval width value and the second subinterval width value (e.g., using a weighted sum or a weighted average) to obtain a combined subinterval width value.
[0019] By using such a two-dimensional lookup table reflecting the multiplication of a number of different probability values with a number of different interval size values, the computational complexity can be reduced since a multiplication operation can be omitted. For example, one of the two indexes (row index and column index) specifying the entries of the two-dimensional lookup 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 lookup table can be uniquely identified, the identified element typically reflecting the product of the probability value associated with the respective state variable value and the coding interval size associated with the second table index. As a result, the execution of a multiplication operation can be omitted by spending memory, which may possibly be a read-only memory, on the two-dimensional lookup table. This may be advantageous both in terms of computational resources and also in terms of energy consumption.
[0020] In a preferred embodiment of the arithmetic encoder, a two-dimensional look-up table is provided whose entries represent probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k* a k ]; TIFF2025015642000007.tif515), which forms a one-dimensional lookup table, and a second one-dimensional vector ( It can be expressed as a binary product between the following: TIFF2025015642000008.tif514). By using such a three-dimensional lookup table, the multiplication operations between different pairs of probability values and coding interval sizes can be reflected in the table. Therefore, by selecting the appropriate elements of the two-dimensional lookup table, it is possible to avoid performing multiplication operations. Moreover, using such an approach, the entries of the two-dimensional lookup table can be obtained in a very simple manner.
[0021] In a preferred embodiment of the arithmetic encoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (Base TabLPS), where a first group (or block, e.g., the “top half”) of elements of the two-dimensional lookup table are identical to or are rounded versions of the elements of the base lookup table, and a second group (or block, e.g., the “bottom half”) of elements of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table. By using such an approach, a roughly exponential growth or decay of the elements of the two-dimensional lookup table can be obtained. For example, a very uniform two-dimensional lookup table can be obtained by defining the elements of the two-dimensional lookup table such that a second group of elements of the two-dimensional lookup table are substantially (except for deviations caused by, for example, rounding) a scaled version of a first group of elements of the two-dimensional lookup table. It is also noted that the elements of the two-dimensional lookup table can be easily obtained using such an approach.
[0022] In a preferred embodiment of the arithmetic encoder, the second group of elements of the two-dimensional lookup table are right-shifted versions of the elements of the base lookup table. Using such an approach, the elements of a two-dimensional lookup table can be obtained in a particularly efficient way, since the right-shift operation can be performed very easily, and the right-shift operation also induces appropriate scaling, which allows the rounding operation to be performed in a very efficient way.
[0023] In a preferred embodiment of the arithmetic encoder, the probability exponent (Qp2(p LPS );i) determines whether to evaluate elements of a first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table, and determines a probability index (e.g., a probability value, e.g., p LPS A first range (e.g., 0 to μ-1) of a probability index (e.g., a probability value, e.g., p LPS A second range (e.g. μ or more) of the probability distribution (obtained by quantifying, for example, using a quantization function Qp2(.)) is associated with the elements of the second group of elements. By using such a concept, the difference between using the elements of the first group of elements or the elements of the second group of elements may be made according to a probability index, for example based on the respective state variable values. For example, a probability index (which may be defined, for example, by the probability of the least likely symbol or by an integer exponent value) may be derived based on the respective state variable values, for example using a mapping. For example, a first probability value obtained using the mapping of the first state variable values or a second probability value obtained using the mapping of the second state variable values may be used to determine which element of the two-dimensional lookup table should be evaluated (in particular, whether to evaluate the elements of the first group of elements of the two-dimensional lookup table or the elements of the second group of elements of the two-dimensional lookup table). This concept also allows each element of the two-dimensional lookup table to be determined "on the fly" based on the base lookup table, with the number of elements being less than the number of table elements addressed by the probability index and the coding interval size index.
[0024] In a preferred embodiment of the arithmetic encoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, an extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on the interval size information R, for example by using a quantization operation Qr2(.), for example j) determines which element of the base lookup table to use to obtain an element of the two-dimensional lookup table. By using such a concept, an appropriate element of the base lookup table can be selected even if the extension of the base lookup table in the first direction is smaller than the number of possible probability index values. The extension of the base lookup table in the first direction can be represented by evaluating the division residual of the division between the probability index and the first size value, and the elements of the base lookup table can be reused for two or more different probability index values (which may differ, for example, by the first size value). As a result, an entry of the base lookup table can be used twice, for example with different scaling, for two probability index values that differ by the first size value. Thus, a two-dimensional lookup table is typically available that describes the evolution of the probability index values, and the evolution of the second range of probability index values is a scaled version (e.g., accepting rounding effects) when compared to the evolution of the first range of probability index values.
[0025] In a preferred embodiment, the arithmetic encoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j), [i / μ]); BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., describing the current coding interval size), % is the division residual operation, / is the division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by [.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. The method is configured to obtain elements of a two-dimensional lookup table (RangTabLPS) according to the above. By using such an approach, the interval size information that may be defined by the scaling function or the result of the scaling operation may be obtained in a particularly memory-efficient manner. For example, the "BaseTabLPS" lookup table may be particularly small because its first dimension μ is typically smaller than the range of values of the table index i associated with the probability information, and its second dimension λ may be equal to the possible different interval sizes described by the interval size information. Furthermore, the scaling function may be implemented in a particularly efficient manner, since the number of different scaling coefficients defined by the floor 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, only two different scaling operations can be performed. For example, there may be only an arbitrary choice of two, three or four different scalings (depending on the quotient between i and μ), and these arbitrary choices of scalings may be implemented efficiently using multiplications using only a small number of predetermined values, or even just shift operations.
[0026] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), which describes a set of multiple probability values (e.g., represented by an index i) and an interval size for a given coding interval size, and elements of the two-dimensional lookup table for probability values that are not in the set of multiple probability values and / or coding interval sizes different from the given (reference) coding interval size are derived from the probability table using scaling. Such an approach can be used to exploit the fact that different interval sizes are often related to one another by a scaling that depends on the difference between the associated probability values and / or the difference between the associated coding interval sizes. In other words, even if the two-dimensional lookup table does not contain an element that fits the currently considered probability value and / or the currently considered coding interval size, a suitable interval size can still be obtained, with another element of the two-dimensional lookup table being scaled accordingly (e.g., depending on the currently considered probability value and / or depending on the currently considered coding interval size).
[0027] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table are obtained using a first (multiplicative) scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the coding interval size (R), and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table). Thus, the elements of the two-dimensional lookup table can be obtained "on the fly" using the appropriate entries of the probability table and with appropriate scaling, and the "probability table" to be evaluated is usually significantly smaller than the two-dimensional lookup table. In other words, the appropriate element of the probability table is selected and scaled based on two indices that address the element of the two-dimensional lookup table. However, in many cases, such a concept allows a better trade-off between memory requirements and computational complexity.
[0028] In a preferred embodiment of the arithmetic encoder, the division remainder (i%μ) of the division between a probability index (e.g., i, e.g., representing the current probability value) and a first size value (e.g., μ, e.g., the size value describes the extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or the integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines the scaling factor (2-[i / μ]) used in the second scaling, and / or the coding interval size determines the multiplicative scaling factor (Qr2(R)) of the first scaling. Using such a concept, a small probability table can be used that represents only the interval sizes of a (relatively small) part of the two-dimensional grid of probability indices and coding interval size indices, thus saving memory space.The appropriate interval size information can then be obtained by the above selection of the elements of the probability table and also by the above scaling by a factor of two of the selected elements of the probability table.
[0029] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000009.tif5129i is a table index associated with the probability information, j is a table index associated with the interval size information, % is the division residual operation, / is the division operation, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000010.tif539. By using such a concept to obtain the appropriate elements of a two-dimensional lookup table that may represent or be equal to the interval size information, a very good trade-off between memory requirements and computational complexity can be obtained. The table "probTabLPS" can be, for example, a one-dimensional table, the number of elements of which may be smaller than several different possible values of the table index i. However, by scaling the products of selected elements of the probability table probTabLPS and a scaling factor Qr2(R) that depends on the interval size R, a good precision can be reached and possible rounding errors can be kept reasonably small. Furthermore, an efficient scaling concept can be used, since the scaling operates on integer values obtained by the "floor" operator, which can be defined, for example, by integer multiplication, integer division or bit shift operations. Thus, the computational load is very small.
[0030] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000011.tif5129i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000012.tif539. Furthermore, this approach for obtaining interval size information has been found to be particularly efficient and to produce high quality results for the interval size information (obtained as a result of the first scaling and the second scaling).
[0031] In a preferred embodiment of the arithmetic encoder, a division residual (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling. By selecting elements of the probability table (which may be a one-dimensional probability table) depending on the above partition residual, the fact that the interval sizes are substantially similar in different ranges of the probability index, except for the scaling, can be exploited. Thus, the probability table reflects only values of a single range of the probability index, and interval size values for other ranges of the probability index are obtained using a first scaling. The second scaling adapts the values represented by the probability table or obtained based thereon using the first scaling to the coding interval size, thereby obtaining the appropriate interval size information. As a result, a good trade-off between memory consumption, computational complexity, and accuracy is obtained; e.g., if the first size value is chosen appropriately, the division remainder and the result of the integer division can be obtained in a computationally very simple manner (e.g., to the power of two).
[0032] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000013.tif5132i is a table index associated with the probability information, j is a table index associated with the interval size information, % is a division residual operation, / is a division operation (e.g., providing an integer result), probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is typically larger than μ), R is the interval size, Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000014.tif539. This calculation rule implements the above concepts in a very efficient way.
[0033] In a preferred embodiment of the arithmetic encoder, a two-dimensional look-up table is provided whose entries represent probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; TIFF2025015642000015.tif519), which forms a one-dimensional lookup table, and a second one-dimensional vector whose entries contain the quantization levels of the coding interval size information ( It can be expressed as a binary product between TIFF2025015642000016.tif514). Such a two-dimensional lookup table is sufficiently usable to efficiently derive interval size information based on the state variable values and based on the coding interval size information. A lookup in the two-dimensional lookup table corresponds to a mapping of state variable values to probability values and a multiplication of the obtained probability values with the coding interval size. Thus, it is very easily possible to obtain interval size information that may be equal to a selected entry of the two-dimensional lookup table, and each element of the two-dimensional lookup table may be selected depending on the respective state variable value and independent of the coding interval size information (each state variable value may determine a first index of an element of the two-dimensional lookup table, and the coding interval size information may determine a second index).
[0034] In a preferred embodiment, the arithmetic encoder outputs the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) to the first and second subinterval width values (R*p k), the calculation being configured to calculate probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k 2*a k 2]) to obtain the first and second state variable values (s k ), or a scaled and / or rounded version thereof ([s k *a k ]) to first and second probability values, and by quantizing coding interval size information (e.g., R) describing the size of a coding interval for the arithmetic coding before encoding the symbols into quantization levels, the arithmetic encoder being further configured to determine a product between the first and second probability values and the quantization levels on the one hand (by looking up or multiplying pre-computed products), and 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 weighted average). Using such an approach has also been found to be very efficient under certain circumstances: by deriving the first subinterval width value based only on the first state variable value (but without considering the second state variable value) and calculating the second subinterval width value based only on the second state variable value (but without considering the first state variable value), the substantially separate processing of the state variable values obtained using different adaptation time constants is maintained throughout most of the processing. Only at the final stage are the first subinterval width value and the second subinterval width value combined to obtain a combined subinterval width value, which results in high accuracy and avoids degradation that may occur in some circumstances if the first and second state variable values are combined too early.
[0035] 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. This concept is particularly easy to implement since the logical right shift requires minimal computational resources. In a preferred embodiment, the arithmetic encoder comprises coding interval size information Quantization of TIFF2025015642000017.tif43 TIFF2025015642000018.tif561, wherein TIFF2025015642000019.tif33, TIFF2025015642000020.tif33 and TIFF2025015642000021.tif34 is a parameter. It turns out that this kind of quantization is also very easy to implement. In particular, the parameter TIFF2025015642000022.tif38 and If TIFF2025015642000023.tif34 is chosen to be an integer value (or an integer value greater than 1), the computational effort will be very low.
[0036] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table are the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) increases. It has been shown that using monotonically decreasing entries of a one-dimensional lookup table produces good results for the interval size information.
[0037] In a preferred embodiment of the arithmetic encoder, different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size. The use of such equal-sized value intervals allows for simple quantization. Furthermore, the equal-sized value intervals allow the elements of the lookup table to be determined on the fly with moderate effort.
[0038] In a preferred embodiment of the arithmetic encoder, different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size. Such a monotonic decrease in the entries of a one-dimensional lookup table allows exponential decay to be represented with high accuracy.
[0039] An embodiment in accordance with the present invention creates an arithmetic encoder for encoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic encoder comprising interval size information (p k , R*p k ) is expressed as a set of state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of multiple symbol values (e.g., sequences of binary values 0 and 1) previously encoded with different adaptive time constants, and the arithmetic encoder is configured to derive a combined state variable value (s k ) (which may be, for example, a weighted sum of the state variable values), a number of individual state variable values (s i k ), and the arithmetic encoder is configured to derive the basis for the combined state variable values (s k ), or a scaled and / or rounded version thereof ([s k 2*a k 2]) using a look-up table to generate interval size information (e.g., p k or R*p k ) is configured to obtain
[0040] This embodiment according to the invention is based on the idea that high efficiency can be obtained in determining the interval size information if the combined state variable value is determined before the mapping is performed using the lookup table. Thus, it is no longer necessary to perform separate lookup table lookups using two (or more) state variable values. Rather, a single table lookup may be sufficient to determine the interval size information. In particular, it has been found that combining the first state variable value with the second state variable value before performing the lookup table lookup does not significantly degrade the quality of the interval size information under many circumstances.
[0041] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of the state variable values to obtain the combined state variable value. Calculating a weighted sum of the state variable values has been found to be an efficient method for determining the combined state variable value and is also suitable for taking into account different associations between the two state variable values, which are caused by different adaptation time constants used in deriving the state variable values.
[0042] In a preferred embodiment, the arithmetic encoder calculates the state variable values ( TIFF2025015642000024.tif65) and associated weighting values ( TIFF2025015642000025.tif68 Combined state variable value (s k ) to get the rounded value ( The method is configured to determine the sum of the image size (in pixels) of the TIFF2025015642000026.tif616. It has been found that performing rounding of the scaled values before performing the summation gives particularly meaningful results: the negligible contribution of one of the state variable values is eliminated by the rounding and does not affect the combined state variable value. Thus, reliable results can be obtained, and the combined state variable value usually takes integer values, which are very suitable to serve as an index for selecting elements of a lookup table.
[0043] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000027.tif634s k 2 is the state variable value, N is the number of state variable values considered, [.] is the floor operator, d k i is the weighting value associated with the state variable values (e.g., the weighting coefficients that control the influence of each individual state variable value on the joint state variable value) (d k i is preferably the power of two integer values, and two different d k i The ratio between two different d k i The ratio between the combined state variable values s k The method is configured to determine: This concept for deriving combined state variable values, as explained earlier, results in very meaningful combined state variable values.
[0044] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value in a first direction (e.g., more positive) if the symbol to be encoded takes a first value (e.g., “1”) and to change the state variable value in a second direction (e.g., more negative) if the symbol to be encoded takes a second value (e.g., “0”) different from the first value (e.g., such that the state variable value can take positive and negative values), and the arithmetic encoder is configured to change the absolute value (s k i >0 then s k, otherwise -s k ) (e.g., in response to a scaled and rounded version of the absolute value of the combined state variable value). This concept for determining state variable values (e.g., for determining a first state variable value and a second state variable value) provides the same advantages as when separate mappings of the first state variable value and the second state variable value are used.
[0045] In a preferred embodiment, the arithmetic encoder generates a probability value (p k ) to values provided by a lookup table (e.g., TIFF2025015642000028.tif637), and the arithmetic encoder is configured to set a probability value (p k ) from a predetermined value (e.g., 1) to a value provided by a lookup table (e.g., TIFF2025015642000029.tif640). This concept for mapping combined state variable values to probability values is efficient because the size of the lookup table can be reduced. In particular, the number of elements in the lookup table can be reduced because the same element of the lookup table is associated with a given positive combined state variable value and with a negative version of the given (positive) combined state variable value. In other words, for a given concept, the absolute value of the combined state variable value determines which element of the lookup table is evaluated to provide a probability value. However, the sign of the combined state variable value is still taken into account in a proper and efficient way by setting the probability value to the value provided by the lookup table or to a value obtained by subtracting the value provided by the lookup table from a predefined value depending on the sign. Thus, a meaningful probability value can be obtained based on the combined state value with a low degree of computational complexity.
[0046] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000030.tif1180LUT2 is a lookup table containing probability values, [.] is the floor operator, and s k is the binding variable value, and a k is a weighting value associated with the joint state variable values (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby determining the joint probability value p k The method is configured to determine: The combined state variable value s k This concept for determining joint probability values based on σ implements the concepts outlined above in a computationally very efficient manner.
[0047] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000031.tif1196LUT2 is a lookup table containing probability values, [.] is the floor operator, and s k is the binding variable value, and a k is a weighting value associated with the joint state variable values (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby determining the joint probability value p k The method is configured to determine: In this concept, the scaled joint state variable values s k There is no calculation of the absolute value of . Rather, there is only a "floor" operation applied to the scaled ("weighted") combined state variable value, which in some circumstances can be implemented with less effort than forming the absolute value. Negation applies only to integer values. The integer value is obtained by rounding downwards (the floor operator) of the weighted combined state variable value. However, negation of integer values is usually not as complicated as negation of fractional or floating-point representation values. Thus, the concepts described here may be useful in reducing complexity in some circumstances.
[0048] In a preferred embodiment, the arithmetic encoder generates the combined state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) is converted to the subinterval width value (R*p k ), whose entries are addressed in dependence on the combined state variable value (e.g., to determine the coordinates of a first lookup table entry) and in dependence on coding interval size information (e.g., R) describing the size of a coding interval of the arithmetic coding before encoding of a symbol (e.g., to determine the coordinates of a second lookup table entry). Using this concept, the mapping of the combined state variable values to combined probability values and the multiplication of the combined probability values with the coding interval size can be combined into a single lookup table lookup operation. Thus, a two-dimensional lookup table is required, but the multiplication operation is eliminated. The entries of the two-dimensional lookup table may be pre-computed, which keeps the runtime join load very low. Rather, the first table index may be determined based on the combined state variable values, or a scaled and / or rounded version thereof, and the second table index may be determined based on the coding interval size information (e.g., using rounding or quantization). The first step index and the second state index may uniquely specify an element of the two-dimensional lookup table, and the specified element of the two-dimensional lookup table may be used as the sub-interval width value (or as the interval size information). Thus, a very efficient concept is obtained, which reduces the computational complexity when sufficient memory is available for the lookup table.
[0049] In a preferred embodiment of the arithmetic encoder, a two-dimensional lookup table is provided whose entries represent probability values for different value intervals of the value domain of the combined state variable values, or a scaled and / or rounded version thereof ([s k* a k ]; The first 1D vector ( TIFF2025015642000033.tif519, forming a one-dimensional lookup table), and a second one-dimensional vector whose entries contain the quantization levels of the coding interval size information ( It can be expressed as a binary product between TIFF2025015642000034.tif514). Such a two-dimensional lookup table provides very good results. In particular, every element of the two-dimensional lookup table represents a multiplication of the respective probability value associated with the combined state variable value and the coding interval size. Thus, the two-dimensional lookup table described herein eliminates the need for multiplications, which can be considered very resource-efficient.
[0050] In a preferred embodiment of the arithmetic encoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (Base TabLPS), where a first group (or block, e.g., the “top half”) of elements of the two-dimensional lookup table are identical to or are rounded versions of the elements of the base lookup table, and a second group (or block, e.g., the “bottom half”) of elements of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table. By defining the elements of the two-dimensional lookup table based on the base lookup table, the two-dimensional lookup table can be generated in a very simple manner. Moreover, since the second group of elements of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table (the elements of the first group of elements of the two-dimensional lookup table are identical to the elements of the base lookup table or the rounded versions of the elements of the base lookup table), the exponential expansion of the elements of the rows or columns of the two-dimensional lookup table is well reflected. By using the concept that the second block of elements of the two-dimensional lookup table is substantially (except for the rounding effect) a scaled version of the first block of elements of the two-dimensional lookup table, it is possible to reflect the appropriate properties for mapping the combined state variable values to the interval size information.
[0051] In a preferred embodiment of the arithmetic encoder, the second group of elements of the two-dimensional lookup table are right-shifted versions of the elements of the base lookup table. This allows easy generation of entries for a two-dimensional lookup table. The right shifting element of the base lookup table has been found to be a very efficient concept that combines scaling and rounding operations.
[0052] In a preferred embodiment of the arithmetic encoder, the probability exponent (Qp2(p LPS );i) determines whether to evaluate elements of a first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table, and determines a probability index (e.g., a probability value, e.g., p LPS A first range (e.g., 0 to μ-1) of a probability index (e.g., a probability value, e.g., p LPSA second range (eg, μ or greater) of the elements of the second group of elements (obtained, for example, by quantifying with a quantization function Qp2(.)) is associated with the elements of the second group of elements. Selection of elements of the two-dimensional lookup table can be done very efficiently by using a probability index, which can be derived directly from the combined state variable values (without using the probability value as an intermediate quantity) or can be derived using a combined probability value based on the combined state variable values, and the probability index is used to switch between using elements of the first group of elements and elements of the second group of elements, thereby allowing the elements of the two-dimensional lookup table to be determined efficiently on the fly.
[0053] In a preferred embodiment of the arithmetic encoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, an extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on the interval size information R, for example by using a quantization operation Qr2(.), for example j) determines which element of the base lookup table to use to obtain an element of the two-dimensional lookup table.
[0054] In a preferred embodiment, the arithmetic encoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j), [i / μ]) BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., describing the current coding interval size), % is the division residual operation, / is the division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by[.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. The method is configured to obtain elements of a two-dimensional lookup table (RangTabLPS) according to the above. By evaluating the division residual to determine which element of the base lookup table is used to obtain the element of the two-dimensional lookup table, the on-the-fly determination of the element of the two-dimensional lookup table can be performed with a very high efficiency. In particular, the fact that the two-dimensional lookup table is composed of two or more element groups based on the same element of the base lookup table can be reflected by using the division residual to determine which element of the base lookup table is used to obtain the element of the two-dimensional lookup table. In other words, the periodic relationship between the elements of the two-dimensional lookup table and the elements of the base lookup table is well reflected by considering the division residual, because the division residual is also periodic with respect to the increase of the probability index.
[0055] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), which describes a set of multiple probability values (e.g., represented by an index i) and an interval size for a given coding interval size, and elements of the two-dimensional lookup table for probability values that are not in the set of multiple probability values and / or coding interval sizes different from the given (reference) coding interval size are derived from the probability table using scaling. This concept is based on the same considerations as the corresponding concept described for the case of separate mappings of state variable values.
[0056] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), which describes a set of multiple probability values (e.g., represented by an index i) and an interval size for a given coding interval size, and elements of the two-dimensional lookup table for probability values that are not in the set of multiple probability values and / or coding interval sizes different from the given (reference) coding interval size are derived from the probability table using scaling. Such on-the-fly determination of the elements of the two-dimensional lookup table has been found to include a particularly high resource efficiency. Furthermore, it is noted that the above comments made with respect to the corresponding algorithm used within the context of the separate mapping of the first and second state variable values apply. By using a probability table, which is typically smaller (e.g. contains fewer elements) than the two-dimensional lookup table as the basis for the determination of the elements of the two-dimensional lookup table, a very high efficiency can be obtained. For example, the probability table may represent a mapping of various probability values over an important range and various (quantized) coding interval sizes, and thus may help to avoid multiplications beyond simple scaling (which in a "simple" scaling may be implemented, for example, using shift operations). The elements of the two-dimensional lookup table for one or more probability values not included in the set of multiple probability values and for one or more coding interval sizes different from the given coding interval size are derived from the probability table using scaling. It is therefore sufficient to have a very small probability table, which may for example include only one row or one column. The number of elements of the probability table may therefore even be less than the number of different possible probability values (i.e. less than the number of different possible probability indices of the two-dimensional lookup table). It should further be noted that the scaling depends on the probability value and / or depends on the coding interval size. The scaling can be performed using very simple mechanisms, such as, for example, bit shifting operations, if the size of the probability table is appropriately selected. Such a "simple" scaling operation based on bit shifting operations requires significantly less computational resources when compared to a "normal" multiplication with an arbitrary variable operand (e.g. different from the potency of 2).
[0057] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional look-up table are obtained using a first (multiplicative) scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the coding interval size (R), and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table). Such a calculation of the elements of the two-dimensional lookup table has been found to be particularly efficient. Reference is further made to the above discussion of the corresponding functions provided in the context of a separate mapping of the first and second state variable values.
[0058] In a preferred embodiment of the arithmetic encoder, a division residual (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ) and / or the coding interval size determines the multiplicative scaling factor (Qr2(R)) of the first scaling. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0059] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000035.tif5129i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to Elements of a two-dimensional lookup table Configured to obtain TIFF2025015642000036.tif539. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0060] In a preferred embodiment of the arithmetic encoder, an element of the two-dimensional lookup table is obtained using a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table) and depending on the coding interval size (R). With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0061] In a preferred embodiment of the arithmetic encoder, a division residual ([i%μ]) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling. With regard to this function reference is also made to the above discussion of corresponding functions provided in the context of a separate mapping between first and second state variable values, whereby a joint state variable value or a joint probability value is used instead of the respective individual state variable values or the respective individual probability values.
[0062] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000037.tif5132i is a table index associated with the probability information, j is a table index associated with the interval size information, % is a division residual operation, / is a division operation (e.g., providing an integer result), probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is typically larger than μ), R is the interval size, Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to this, the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000038.tif539. With regard to this function reference is also made to the above discussion of the corresponding function provided in the context of a separate mapping between first and second state variable values, whereby joint state variable values or joint probability values substitute for individual state variable values and joint probability values substitute for individual probability values.
[0063] In a preferred embodiment, the arithmetic encoder generates the combined state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value (R*p k ), the calculation being performed by computing probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; A one-dimensional lookup table (LUT4) containing the data (TIFF2025015642000039.tif519) is used to calculate the joint state variable values (s k), or a scaled and / or rounded version thereof ([s k *a k ]; The arithmetic encoder does this by mapping the joint probability values (e.g., R) to joint probability values and by quantizing coding interval size information (e.g., R) describing the size of the coding interval for the arithmetic coding before encoding the symbols into quantization levels, and the arithmetic encoder is further configured to calculate a product between the joint probability values and the quantization levels (by looking up or multiplying a pre-computed product). With regard to this function reference is also made to the above discussion of corresponding functions provided in the context of a separate mapping between first and second state variable values, where joint state variable values or joint probability values substitute for individual state variable values and where joint probability values substitute for individual probability values.
[0064] 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. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0065] In a preferred embodiment, the arithmetic encoder comprises: Quantization of TIFF2025015642000041.tif43 TIFF2025015642000042.tif561, wherein TIFF2025015642000043.tif33, TIFF2025015642000044.tif33 and TIFF2025015642000045.tif34 is a parameter. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0066] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table are the combined state variable values, or a scaled and / or rounded version thereof ([s k* a k ]) increases. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0067] In a preferred embodiment of the arithmetic encoder, different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k* a k ]) are of equal size. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0068] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table are the combined state variable values, or a scaled and / or rounded version thereof ([s k* a k ]) increases with increasing rate. With regard to this function, reference is also made to the above discussion of the corresponding function provided in the context of the separate mapping of the first state variable value and the second state variable value.
[0069] In a preferred embodiment of the arithmetic encoder, the lookup table defines an exponential decay (eg, drop from 0.5) (eg, within a tolerance of + / - 10% or + / - 20%). It has been found that the exponential decay closely reflects a suitable relationship for deriving interval size information based on the state variable values, and can be represented very efficiently using a lookup table, even allowing on-the-fly determination of the lookup table elements with little effort.
[0070] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000046.tif13133z is a given (constant) offset value, TIFF2025015642000047.tif56 is one or more weighting values, TIFF2025015642000048.tif55 is one or more weighting values, A is TIFF2025015642000049.tif689 or updated by zeroing or reducing the magnitude to deviate only from one or more extreme values of the argument Avoid leaving TIFF2025015642000050.tif55 in a given range of values (e.g. TIFF2025015642000051.tif55 TIFF2025015642000052.tif514 has a larger value domain; that is, TIFF2025015642000053.tif55 Subquantized to TIFF2025015642000054.tif514; For the extreme value of TIFF2025015642000055.tif514, TIFF2025015642000056.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000057.tif514, TIFF2025015642000058.tif44, TIFF2025015642000059.tif54, and TIFF2025015642000060.tif44 are the given parameters (examples are given above) According to this, multiple mutable state values Configured to update TIFF2025015642000061.tif65. It has been found that such updates of state variables can be done computationally efficiently and the mapping table can be pre-computed. For example, It can be achieved that the TIFF2025015642000062.tif65 maintains a predetermined range (e.g., between a predetermined minimum value and a predetermined maximum value). Furthermore, using an appropriate selection of the mapping table A, it can be achieved that the state variable values are well adapted to a statistical description of previously processed (e.g., encoded or decoded) symbols. It should also be noted that the adaptation time constants of the respective state variable values can be adapted by appropriately selecting the weighting values m and n. Thus, the algorithm described here is a method for determining the state variable values Can be used efficiently to update TIFF2025015642000063.tif65.
[0071] In a preferred embodiment, the arithmetic encoder uses a table lookup or calculation to It is configured to derive TIFF2025015642000064.tif636. Therefore, various concepts are possible for deriving the updated state variable values.
[0072] An embodiment in accordance with the present invention is an arithmetic encoder for encoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic encoder comprising one or more state variable values (s1 k , s2 k ) that represents statistics (e.g., in the case of multiple state variable values, statistics of different adaptation time constants) of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1); and An arithmetic encoder calculates one or more state variable values (s i k) (e.g., associated with a given context mode, indicated by index k) k , R*p k ), which represents statistics (e.g., in case of multiple state variable values, statistics of different adaptation time constants) of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1), and the arithmetic encoder is configured to derive a first state variable value (s k 1) is configured to update.
[0073] This embodiment according to the invention is based on the discovery that the update of state variable values used to derive interval size information for arithmetic coding (e.g., encoding or decoding) can be performed with particularly good results while using lookup tables, because the use of lookup tables allows the update of state variable values that are particularly well adapted to the characteristics of the signal to be coded or decoded. For example, a lookup table can be used to easily represent a fine-tuned relationship between "old" and updated state variable values, without having to perform extensive calculations (e.g., evaluation of trigonometric or exponential or logarithmic functions, etc.). Thus, the implementation of the update of state variable values using lookup tables helps to keep the computational complexity reasonably small. Ideally, in order to obtain the updated state variable values based on the "old" state variable values, only multiplications (or simple multiplications, e.g., bit shift operations), rounding operations, and additions are used besides the lookup table lookup. For example, the currently processed symbol (e.g., the symbol to be coded or the symbol to be decoded) determines which part of, e.g., a lookup table-based mapping rule is evaluated to obtain the updated state variable values. In conclusion, it has been found that using a look-up table to provide updated state variable values offers both high flexibility and low computational complexity.
[0074] In a preferred embodiment, the arithmetic encoder uses a look-up table (A) to determine (e.g., after encoding the symbol to be encoded) a second state variable value (s k 2) is configured to update. It has been found to be advantageous to update the second state variable value using the same lookup table used to update the first state variable value. For example, possible differences in terms of adaptation time constants of the first and second state variable values can be taken into account using one or more scaling factors, which can be applied, for example, to the selection of elements of the lookup table and / or to the scaling of selected elements of the lookup table. In conclusion, even if only a single lookup table is used to derive the two or more state variable values, the two or more state variable values can be adapted to represent different statistical characteristics of the processed symbol values (i.e., of the previously encoded or decoded symbol values).
[0075] In a preferred embodiment, the arithmetic encoder is configured to update the first state variable value and the second state variable value using different adaptive time constants. By updating the first and second state variable values using different adaptation time constants, different statistical characteristics of previously processed symbols can be reflected in the state variable values. The availability of state variable values representing the statistics of symbols processed with different adaptation time constants has been found to be very useful for precise tuning of the interval size of the arithmetic coding (encoding / decoding) of the symbols. Also, look-up table based updating of the state variable values has been found to achieve very high reliability and low computational complexity.
[0076] In a preferred embodiment, the arithmetic encoder is configured to selectively increment or decrement the previous state variable value by a value determined using the lookup table depending on whether the symbol being encoded has a first value or a second value different from the first value. By using such an approach, the state variable values can be adapted recursively, with the processed symbol (e.g., the symbol to be encoded, or the previously encoded symbol, or the previously decoded symbol) determining the direction of change (increase or decrease) of the state variable value. On the other hand, the size of the adaptation (i.e., the size of the increase or decrease) is determined by the selected lookup table entry, and scaling may be applied. As a result, there is an efficient mechanism for updating the state variable values, which allows for a high degree of flexibility and yet is very resource efficient.
[0077] In a preferred embodiment, the arithmetic encoder is configured to increase the previous state variable value by a relatively larger value if the previous state variable value is negative compared to when the previous state variable value is positive when the symbol to be encoded has a first value, and the arithmetic encoder is configured to decrease the previous state variable value by a relatively larger value if the previous state variable value is positive compared to when the previous state variable value is negative when the symbol to be encoded has a second value different from the first value (which is arrived at, for example, by appropriately selecting a look-up table). Using such an approach, the state variable values can be reached as evolving exponentially towards a maximum positive value and exponentially evolving towards a minimum value. This approximation towards the (positive) maximum and (negative) minimum values can be nearly asymptotic. In other words, the further the current state variable value is from the (positive) maximum, the larger the (increase) step towards the (positive) maximum, and the further the current state variable value is from the (negative) maximum, the larger the (decrease) step towards the (negative) minimum. Thus, the exponential asymptotic behavior can be approximated using this concept. However, such a concept has been found to be very suitable for updating state variable values. In particular, such an approach has been found to be very suitable for an "infinite impulse response" approach for determining state variable values.
[0078] In a preferred embodiment, the arithmetic encoder calculates a first value for a symbol to be encoded by multiplying a predetermined (e.g., fixed) offset value (z) and a previously calculated first state variable value ( TIFF2025015642000065.tif65), or a scaled and / or rounded version thereof ( TIFF2025015642000066.tif622), and the arithmetic encoder is configured to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value when the symbol to be encoded takes on a second value, by multiplying a predetermined (e.g., fixed) offset value (z) and an inverse (multiplied by -1) version of the previously calculated first state variable value ( TIFF2025015642000067.tif68), or a scaled and / or rounded version thereof ( The lookup table may be configured to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value in dependence on a sum of the first state variable value (e.g., an inverse version of a previously calculated first state variable value). Using such an approach, it is possible with moderate effort to select an appropriate entry of the lookup table, taking into account the currently processed symbol. Both the previously calculated state variable value and the processed (encoded or decoded) symbol determine the selection of the lookup table entry, which may then be determined by how much the updated state variable value increases or decreases when compared to the previously calculated state variable value. The offset value may, for example, ensure that the sum of the offset value and the previously calculated state variable value scaled (possibly reversed depending on the processed symbol) results in a valid lookup table index. This is because a valid lookup table index is usually non-negative. Using such a concept, it is easily possible to select an appropriate lookup table index and provide an updated state variable value efficiently.
[0079] In a preferred embodiment, the arithmetic encoder calculates a first value for a symbol to be encoded by a predetermined (e.g., fixed) offset value (z) and a previously calculated second state variable value ( TIFF2025015642000069.tif65), or a scaled and / or rounded version thereof ( TIFF2025015642000070.tif622), and the arithmetic encoder is configured to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value when the symbol to be encoded takes on the second value, by multiplying a predetermined (e.g., fixed) offset value (z) and an inverse (multiplied by -1) version of the previously calculated second state variable value ( TIFF2025015642000071.tif68), or a scaled and / or rounded version thereof ( The lookup table may be configured to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value depending on the sum of the second state variable value (e.g., an inverse version of a previously calculated second state variable value). This concept of updating the second state variable value is substantially the same as the concept of updating the first state variable value, e.g., the same lookup table can be evaluated to save memory resources, and, e.g., different scaling values can be used as compared to updating the first state variable value, thereby obtaining modified state variable value update characteristics. For example, different adaptation time constants for the first state variable value and the state variable value can be obtained by using different scaling values for determining the updated first state variable value and the updated second state variable value.
[0080] In a preferred embodiment, the arithmetic encoder uses a first scaling value (m k 1) to obtain the previously calculated first state variable value (s k1), and the arithmetic encoder uses the second scaling value (m k 2) to obtain the previously calculated second state variable value (s k 2), the first scaling value differing from the second scaling value (and the first and second scaling values are preferably integer powers of 2, the ratio between the first scaling value and the second scaling value is preferably an integer power of 2, and the first scaling value and the second scaling value preferably differ by a factor of at least 8). By using different scaling values when determining the index of the lookup table entry to be evaluated when updating a first state variable value and when determining the index of the lookup table entry to be evaluated when updating a second state variable value, different adaptation time constants can be implemented efficiently, and the basic state variable value update algorithm and the lookup table used can be identical, with the only significant difference being the choice of scaling value, allowing for a very resource-saving implementation.
[0081] In a preferred embodiment, the arithmetic encoder updates the first state variable value by a first scaling value (e.g., n k 1) to scale the value returned by the evaluation of the lookup table, and the arithmetic encoder is configured to use a second scaling value (e.g., n k 2) to scale a value returned by evaluation of the lookup table, the first scaling value being different from the second scaling value. The described different scaling of values returned by lookup table evaluations (e.g., of selected lookup table entries) allows for efficient implementation of different adaptation time constants when updating the first state variable value and the second state variable value. Furthermore, such scaling allows the same lookup table to be used for updating the first state variable value and the second state variable value, thereby helping to conserve memory resources. In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000073.tif13133A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000074.tif56 is one or more weighting values, TIFF2025015642000075.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000076.tif55. Such an update mechanism for the state variable values can be implemented computationally efficiently and has been shown to provide reliable results.
[0082] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000077.tif13137A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000078.tif56 is one or more weighting values, TIFF2025015642000079.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000080.tif55. It has been found that such a mechanism for updating state variable values can also be highly advantageous in some circumstances. In particular, using such an approach, it is not necessary to invert floating-point values, which can be computationally inefficient in some implementations. Thus, the present concepts can be very resource efficient in some circumstances.
[0083] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000081.tif13136A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000082.tif56 is one or more weighting values, TIFF2025015642000083.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000084.tif55. This concept has also proven to provide particularly high computational efficiency and good accuracy in some implementations.
[0084] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000085.tif13140A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000086.tif56 is one or more weighting values, TIFF2025015642000087.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000088.tif55. This concept has also been shown to provide advantages in terms of computational efficiency and reliability in some circumstances.
[0085] In a preferred embodiment of the arithmetic encoder, the entries of A decrease monotonically with increasing lookup table index. Using such an approach, it may be possible to arrive at a monotonic and / or continuous and / or asymptotic approximation of the state variable values to their maximum or minimum values. For example, it may be possible to arrive at a state variable value that is far away from its respective maximum or minimum value being relatively quickly corrected towards its respective maximum or minimum value, while a state variable value close to its respective maximum or minimum value being relatively slowly corrected towards said maximum or minimum value. Thus, the above selection of look-up table entries allows for a smooth approximation of the maximum or minimum value, which has been found to be very useful for deriving interval size information based on another state variable value.
[0086] In a preferred embodiment, the arithmetic encoder is TIFF2025015642000089.tif689 or updated by zeroing or reducing the magnitude to deviate only from one or more extreme values of the arguments Avoid leaving TIFF2025015642000090.tif55 in a given range of values (e.g. TIFF2025015642000091.tif55 TIFF2025015642000092.tif514 has a larger value domain; that is, TIFF2025015642000093.tif55 Subquantized to TIFF2025015642000094.tif514; For the extreme value of TIFF2025015642000095.tif514, TIFF2025015642000096.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000097.tif514, TIFF2025015642000098.tif44, TIFF2025015642000099.tif54, and TIFF2025015642000100.tif44 are the predefined parameters (an example is given above). It has been found that such a selection of lookup table A results in a particularly advantageous behavior of the state variable values that are updated using lookup table A.
[0087] In a preferred embodiment of the arithmetic encoder, the last entry of the look-up table (which is addressed when the first state variable value reaches a predetermined range of values extending up to the maximum allowable value or when the first state variable value exceeds a predetermined threshold) is equal to zero. By using the last entry of the lookup table (equal to 0), it is easy to avoid the updated state variable value exceeding the maximum and / or minimum values. In a preferred embodiment, the arithmetic encoder is configured to apply a clipping operation to the updated state variable values to keep the updated, clipped state variable values within a predetermined range of values. Using such a mechanism, it is easy to prevent the state variable value from going outside a given range between a minimum and maximum value, thus ensuring that the state variable value takes on "reasonable" values.
[0088] In a preferred embodiment, the arithmetic encoder comprises: Clipping operation by TIFF2025015642000101.tif655 configured to apply to the updated state variable values; TIFF2025015642000102.tif66 is the maximum allowed value for TIFF2025015642000103.tif65, TIFF2025015642000104.tif65 This is the minimum allowed value for TIFF2025015642000105.tif65. It has been shown that such clipping operations can be implemented in an efficient manner and avoid invalid state variable values.
[0089] In a preferred embodiment, the arithmetic encoder is configured to apply different scaling values to different context models (eg, such that at least one of the scaling values differs between two different context models). Different scaling values for different context models can be used to take into account different statistical properties of different context models (which may be associated with different types of information and / or types of bitstream syntax elements). By using different scaling values for different context models, the update procedure of the state variable values can be easily adapted to different context models without fundamentally changing the underlying algorithm. Thus, appropriate scaling values can be obtained in a very efficient manner.
[0090] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size information defined in one of the above embodiments. It has been found that the concept of updating state variable values can be satisfactorily used in combination with the above concepts for deriving interval size information.
[0091] An embodiment in accordance with the present invention creates an arithmetic encoder for encoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic encoder comprising one or more state variable values (s i k ) is the interval size value (R LPS) (which is associated with a given context mode, e.g., denoted by index k), which represents statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., using different adaptation time constants), and the arithmetic encoder is configured to derive an interval size value (R LPS ), whose dimension is smaller than the number of possible probability indices i, in terms of probability indices, and the arithmetic encoder is configured to determine one or more state variable values (e.g., i=Qp(p LPS If the probability index (i) obtained based on the base lookup table (such as ) is within a first range (e.g., less than μ), the determined interval size value is identical to an element of the base lookup table or is a rounded version of an element of the base lookup table, and if the probability index is within a second range (e.g., equal to or greater than μ), the interval size value (R LPS ) is determined, and the arithmetic encoder is configured to determine an interval size value (R LPS ) to perform arithmetic coding of one or more symbols.
[0092] This embodiment according to the invention is based on the idea that the determination of interval size values in an arithmetic encoder can be performed using a "base lookup table" whose dimensions are smaller than several different interval size values associated with a given current coding interval size by reusing elements of said base lookup table, one time without scaling and one time with scaling. Thus, it is available that the interval size values of arithmetic coding (encoding / decoding) associated with different ranges of state variable values are substantially different (e.g., except for some rounding effects) due to scaling. Thus, a relatively small "base lookup table" can be used, whose entries are used multiple times for different probability indices (probability indices can be derived based on the respective state variable values). In conclusion, the concepts described herein allow for very efficient determination of interval size values based on one or more state variable values.
[0093] In a preferred embodiment, the arithmetic encoder is configured to determine an interval size value, and the determined interval size value (R LPS ) is a right-shifted version of the element of the base lookup table if the probability exponent is within the second range. The concept is based on the idea that a right-shift operation is computationally very efficient and also provides reliable interval size values when the probability exponent is in the second range (while, preferably, no shift operation is applied to elements of the base lookup table when the probability exponent is in the first range). As a result, the interval size values provided for "corresponding" probability exponents in the first and second ranges differ mainly due to bit shifts (excluding possible rounding). This is typically true for the entire range of probability exponent values, or even for the complete "first range" (usually consisting of three or more distinct values). Furthermore, it is noted that a right-shift operation typically corresponds to a division by a power of two.
[0094] In a preferred embodiment, the probability index (Qp2(p LPS )) indicates that the elements of the lookup table are interval size values (R LPS ) or whether the elements of the lookup table are provided as interval size values (R LPS ) is scaled and rounded to obtain the The algorithm can be kept very simple, since the probability index (or, more specifically, the question of whether the probability index is in a first range or in a second range) determines whether to apply scaling (and optionally rounding) to obtain an interval size value based on an element of a lookup table (base lookup table). For example, checking whether the probability index is in a first range or in a second range can be easily performed by dividing the probability index by a predefined value or by comparing the probability index with one or more thresholds. Therefore, based on the probability index, it can be easily determined whether to perform scaling (and optional rounding). Therefore, the concept of deriving an interval size value is very efficient.
[0095] In a preferred embodiment of the arithmetic encoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, an extension of the base lookup table in a first direction) and an interval size index (which can be obtained based on the interval size information or the total interval size information R, for example, using a quantization operation Qr2(.)) determines which element of the base lookup table to use to obtain the interval size value. By selecting the entries of the base lookup table depending on the division residual and the interval size exponent, a two-dimensional base lookup table can be easily evaluated, and the elements of the two-dimensional base lookup table can incorporate multiplication with the interval size value (which can be expressed by the interval size exponent). Therefore, by having a two-dimensional base lookup table, the multiplication with the interval size value can be omitted (the division residual can be used as the first table index, and the interval size exponent can be used as the second table index). Furthermore, the use of the division residual as the first table index is well suited to the fact that the elements of the base lookup table are selected cyclically with increasing probability exponents (because the subsequent ranges of the probability exponents select the common range of the base lookup table). In conclusion, the above implementation allows very easy access to the elements of the base lookup table, and the two-dimensional nature of the base lookup table helps to avoid multiplication with the interval size value.
[0096] In a preferred embodiment, the arithmetic encoder comprises: R XPS =Scal(BaseTabLPS[i%μ][j], [i / μ]) BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., total interval size information R), % is a division residual operation, / is a division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by [.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. According to this, the interval size value R XPS (For example, R LPS) The method is configured to obtain Such a concept for determining the interval size values constituting the interval size information has been found to be computationally efficient and allows the use of a relatively small base lookup table. In particular, multiplication operations can be avoided. Furthermore, the division residual and division operations can also be implemented in a very computationally efficient manner, for example when the dimension μ has a power of 2. Thus, the described concept for deriving the interval size values allows for a computationally very efficient implementation.
[0097] In a preferred embodiment, the arithmetic encoder calculates one or more state variable values (s i k ) (which is associated with a given context mode indicated by index k) LPS ), which represents statistics of a number of previously coded symbol values (e.g., sequences of binary values 0 and 1) (e.g., with different adaptive time constants); the arithmetic encoder derives an interval size value (R) based on (current) probability values derived from one or more state variable values and based on the (current) coding interval size (R) using a probability table (Prob TabLPS) (whose dimension in terms of probability indexes is smaller than the number of possible probability indexes i). LPS ), the probability table describing a set of a plurality of probability values (e.g., for a probability index between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, the arithmetic encoder determining whether the current probability value is not in the set of a plurality of probability values (e.g., for a probability index associated with a current probability value equal to or greater than μ) and / or whether the current coding interval size (R) is different from the given (reference) coding interval size, the arithmetic encoder determining ... LPS ) and the arithmetic encoder is configured to scale the elements of a given (reference) probability table (Prob_TabLPS) to obtain an interval size value (R LPS ) to perform arithmetic coding of one or more symbols. This concept is based on the idea that interval size values associated with different (non-overlapping) ranges of probability values (or probability exponents) are substantially related (except for possible rounding effects) by a scaling operation. It should also be noted that if the size of the lookup table (probability table) is appropriately selected, the scaling operation can be implemented in a computationally efficient manner, for example, using bit shifting operations. As a result, it is possible to derive interval size values that are used for arithmetic coding (encoding or decoding) with little computational effort and that use only a small-sized lookup table that saves memory.
[0098] In a preferred embodiment, the arithmetic encoder is configured to use a (multiplicative) first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the (current) coding interval size (R), and to obtain the interval size value using a second scaling of a result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of multiple probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table). A small probability table can be used by using two stages of multiplication or scaling to obtain interval size information. For example, a probability table may "directly" cover only a single coding interval size and a given relatively narrow range of probability values (which may be represented by a "set of probability values"). Thus, scaling is performed to obtain meaningful and reliable interval size values for any other coding interval size and for any probability value that is not included in the set of probability values "directly" covered by the probability table.
[0099] In a preferred embodiment of the arithmetic encoder, the division remainder (i%μ) of the division between the probability index (e.g., i, e.g., representing the current probability value) and the first size value (e.g., μ, e.g., the size value describes the extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or the integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines the scaling factor (2-[i / μ]) used in the second scaling, and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the first scaling. Using the division residual to determine which elements of the probabilities are scaled helps exploit the fact that entries in the probability table are periodically reused (e.g., cyclically) with increasing probability exponents. The use of the division residual accounts for this fact. Also, the division residual can be calculated with great computational efficiency in some circumstances, especially when the division is done by a factor of two. Furthermore, by determining the scaling factor based on the result of the integer division, the scaling factor can be easily assigned to different (adjacent) ranges of probability exponent values. Furthermore, the result of the integer division can be calculated in a computationally very efficient manner in some circumstances, especially when the division is performed by a factor of two. Furthermore, determining the multiplicative scaling factor depending on the coding interval size reflects the fact that the interval size value is proportional to the coding interval size, and therefore the interval size value can be obtained with high efficiency and accuracy.
[0100] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000106.tif5100i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for i is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the interval size value R XPS (For example, R LPS ) is configured to obtain Such an algorithm for determining the interval size values 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, for example using one or more bit shifting operations.
[0101] 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 whether the element associated with the current probability value (specified by index i) is included in the probability value (e.g. depending on whether the current probability value is 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). In this concept, the processing order of the first and second scaling is reversed compared to the above concept, but the basic considerations remain the same.
[0102] In a preferred embodiment, the division remainder (i%μ) of the division between the probability index (e.g., i, e.g., representing the current probability value) and the first size value (e.g., μ, e.g., the size value describes the extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or the integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines the scaling factor (e.g., 2-[i / μ] or ab[i / μ]) used in the first scaling, and / or the (current) coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling. In this concept, the order of the first and second scaling is reversed compared to the above concept, but the basic considerations remain unchanged.
[0103] In a preferred embodiment, the arithmetic encoder comprises: where i is the table index associated with the probability information, j is the table index associated with the (current) 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 (the range of values for i is typically larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the interval size value R XPS (For example, R LPS ) is configured to obtain In this concept, the scaling order of the first and second scaling is reversed compared to the implementation above, but the basic underlying idea remains the same.
[0104] In the following, some embodiments related to arithmetic decoding are described. However, the concepts, considerations, and details underlying these concepts related to arithmetic decoding are substantially the same as the concepts, considerations, and details underlying the arithmetic coding concept. Therefore, the above description applies as well. However, the symbol values to be coded correspond to the symbol values to be decoded or previously decoded symbols, and the previously coded symbol values correspond to previously decoded symbol values. Furthermore, the correspondence between the coding features and the decoding features is clear to those skilled in the art and is also clear from a comparison of the claim wording.
[0105] An embodiment in accordance with the present invention creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder comprising one or more state variable values (s i k ) based on the interval size value (R LPS ) (which is associated with a given context mode, e.g., denoted by index k), which represents statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., using different adaptation time constants), and the arithmetic decoder is configured to derive an interval size value (R LPS ), whose dimension is smaller than the number of possible probability indices i, in terms of probability indices, and the arithmetic decoder is configured to determine one or more state variable values (e.g., i=Qp(p LPSIf the probability index (i) obtained based on the base lookup table (such as ) is within a first range (e.g., less than μ), the determined interval size value is identical to an element of the base lookup table or is a rounded version of an element of the base lookup table, and if the probability index is within a second range (e.g., equal to or greater than μ), the interval size value (R LPS ) is determined, and the arithmetic decoder is configured to determine an interval size value (R LPS ) to perform arithmetic decoding of one or more symbols.
[0106] In a preferred embodiment, the arithmetic decoder is configured to determine an interval size value, and the determined interval size value (R LPS ) is a right-shifted version of the element of the base lookup table if the probability exponent is within the second range.
[0107] In a preferred embodiment of the arithmetic decoder, the probability exponent (Qp2(p LPS )) indicates that the elements of the lookup table are interval size values (R LPS ) or whether the elements of the lookup table are provided as interval size values (R LPS ) is scaled and rounded to obtain the
[0108] In a preferred embodiment of the arithmetic decoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, an extension of the base lookup table in a first direction) and an interval size index (which can be obtained based on the interval size information or the total interval size information R, for example, using a quantization operation Qr2(.)) determines which element of the base lookup table to use to obtain the interval size value.
[0109] In a preferred embodiment, the arithmetic decoder comprises: R XPS=Scal(BaseTabLPS[i%μ][j), [i / μ]) BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., total interval size information R), % is a division residual operation, / is a division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by [.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. According to this, the interval size value R XPS (For example, R LPS) The method is configured to obtain
[0110] An embodiment in accordance with the present invention creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder comprising one or more state variable values (s i k ) (which is associated with a given context mode, e.g., indicated by index k) LPS ), which represents statistics of a number of previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., with different adaptive time constants); the arithmetic decoder derives an interval size value (R) based on (current) probability values derived from one or more state variable values and based on the (current) coding interval size (R) using a probability table (Prob TabLPS) (whose dimension in terms of probability indexes is smaller than the number of possible probability indexes i). LPS), the probability table describing a set of a plurality of probability values (e.g., for a probability index between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, the arithmetic decoder determining whether the current probability value is not in the set of a plurality of probability values (e.g., for a probability index associated with a current probability value equal to or greater than μ) and / or whether the current coding interval size (R) is different from the given (reference) coding interval size. LPS ) to obtain an interval size value (R LPS ) to perform arithmetic decoding of one or more symbols.
[0111] 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 using a second scaling of a result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of multiple probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table).
[0112] In a preferred embodiment of the arithmetic decoder, a division remainder (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0113] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000108.tif5100i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for i is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the interval size value R XPS (For example, R LPS ) is configured to obtain
[0114] 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 whether the element associated with the current probability value (specified by index i) is included in the probability value (e.g. depending on whether the current probability value is 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).
[0115] In a preferred embodiment of the arithmetic decoder, a division remainder (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines a scaling factor (e.g., 2 -[i / μ] or a -b[i / μ] ), and / or the (current) coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0116] In a preferred embodiment, the arithmetic decoder comprises: where i is the table index associated with the probability information, j is the table index associated with the (current) 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 (the range of values for i is typically larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the interval size value R XPS (For example, R LPS ) is configured to obtain
[0117] In the following, some further embodiments related to arithmetic coding are described. An embodiment in accordance with the present invention creates an arithmetic encoder for encoding a number of symbols having symbol values (e.g., binary values), the arithmetic encoder generating a single state variable value (s k ), and the arithmetic encoder is configured to determine the combined state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value ( TIFF2025015642000110.tif59), whose entries are probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; TIFF2025015642000111.tif519) containing a one-dimensional lookup table ( TIFF2025015642000112.tif545 is used to calculate one state variable value (s k ), or a scaled and / or rounded version thereof ([s k *a k ]; TIFF2025015642000113.tif519) to probability values and quantization levels ( This is done by quantizing coding interval size information (e.g., R) describing the size of the coding interval for the arithmetic coding prior to arithmetic coding of the symbol values to be coded into a TIFF2025015642000114.tif514), the arithmetic encoder being further configured to determine a product between the probability value and the quantization level (by lookup or multiplication of a pre-computed product), and the arithmetic encoder being configured to perform an update of the state variable value depending on the symbol value to be coded.
[0118] This embodiment is based on the discovery that a very simple one-dimensional look-up table can be used to determine the subinterval width values based on the combined state variable values. The coding interval size is taken into account by quantizing the coding interval size information and determining the product between the probability value and the quantization value (or quantization level). Thus, reliable results can be obtained with a moderate effort.
[0119] In a preferred embodiment, the arithmetic encoder generates one state variable value (s k ) as a combined state variable value (which may be, for example, a weighted sum of state variable values), as multiple state variable values (s i k ) (e.g., a sequence of binary values 0 and 1) (e.g., in the case of a plurality of state variable values, statistics of different adaptation time constants), which represents statistics of a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1) of different adaptation time constants. It has been found that using the combined state variable value as one state variable value gives particularly good results. Taking into account various adaptation time constants, both short-term and long-term statistics can be taken into account, making the subinterval width values particularly reliable.
[0120] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of the state variable values to obtain the combined state variable value. Such a calculation of the combined state variable values allows for consideration of the different influences of short-term and long-term statistics on the combined state variable values, while keeping the computational effort reasonably low.
[0121] In a preferred embodiment, the arithmetic encoder calculates the state variable values ( TIFF2025015642000115.tif65) and associated weighting values ( TIFF2025015642000116.tif68 Combined state variable value (s k ) to get the rounded value ( TIFF2025015642000117.tif616). Applying a rounding operation before the sum reduces the computational effort and also eliminates the effect of very small products of the state variable values and the associated weighting values, thus improving reliability. In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000118.tif1633s k 2 is the state variable value, N is the number of state variable values considered, [.] is the floor operator, and d k i is the weighting value associated with the state variable values (e.g., the weighting coefficients that control the influence of each individual state variable value on the joint state variable value) (d k i is preferably the power of two integer values, and two different d k i The ratio between two different d k i The ratio between the combined state variable values s k The method is configured to determine: Such a derivation of the combined state variable values has proven to be particularly advantageous. Reference is also made to the above description of the corresponding concept for determining the combined state variable values.
[0122] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000119.tif13133z is a given (constant) offset value, TIFF2025015642000120.tif56 is one or more weighting values, TIFF2025015642000121.tif55 is one or more weighting values, A is TIFF2025015642000122.tif689 or updated by zeroing or reducing the magnitude to deviate only from one or more extreme values of the arguments Avoid leaving TIFF2025015642000123.tif55 in a given range of values (e.g. TIFF2025015642000124.tif55 TIFF202501564 has a larger value domain than 2000125.tif514; that is, TIFF2025015642000126.tif55 Subquantized to TIFF2025015642000127.tif514; For the extreme value of TIFF2025015642000128.tif514, TIFF2025015642000129.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000130.tif514, TIFF2025015642000131.tif44, TIFF2025015642000132.tif54, and TIFF2025015642000133.tif44 are the given parameters (examples are given above) According to this, when updating the state variable values, multiple state variable values Configured to update TIFF2025015642000134.tif65. Such an update of the state variable values has been found to be particularly advantageous, and for the update of the state variables reference is also made to the above discussion of this concept.
[0123] In a preferred embodiment, the arithmetic encoder uses a table lookup or calculation to It is configured to derive TIFF2025015642000135.tif636. Regarding this concept, reference is made to the above explanation.
[0124] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000136.tif13137A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000137.tif56 is one or more weighting values, TIFF2025015642000138.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000139.tif55. Regarding the advantages of this concept for updating one or more state variable values, reference is made to the above discussion.
[0125] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000140.tif13136A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000141.tif56 is one or more weighting values, TIFF2025015642000142.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000143.tif55. Regarding the advantages of this concept for updating one or more state variable values, reference is made to the above explanations.
[0126] In a preferred embodiment, the arithmetic encoder comprises: TIFF2025015642000144.tif13140A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000145.tif56 is one or more weighting values, TIFF2025015642000146.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000147.tif55. Regarding the advantages of this concept for updating one or more state variable values, reference is made to the above discussion.
[0127] 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. The logical right shifting of the coding interval size information is computationally very efficient. In a preferred embodiment, the arithmetic encoder comprises coding interval size information Quantization of TIFF2025015642000148.tif43 TIFF2025015642000149.tif561, wherein TIFF2025015642000150.tif33, TIFF2025015642000151.tif33 and TIFF2025015642000152.tif34 is a parameter. Regarding the advantages of this quantization of the coding interval size information, reference is made to the discussion above. In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table store one state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) increases. Regarding the advantages of this structure of the one-dimensional lookup table, reference is made to the above explanation. In a preferred embodiment of the arithmetic encoder, different value intervals of the value domain of one state variable value, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size. Regarding the advantages of this concept, reference is made to the above explanation.
[0128] In a preferred embodiment of the arithmetic encoder, the entries of the one-dimensional lookup table store one state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) increases with increasing rate. Regarding the advantages of this concept, reference is made to the above explanation. In the following, the concept of arithmetic decoding is described, which corresponds to the above concept of arithmetic coding. Therefore, the same explanation applies, and the same details as above can be optionally used. However, it should be noted that the arithmetic encoder corresponds to the arithmetic decoder. Furthermore, previously encoded symbol values usually correspond to previously decoded symbol values, and the symbol values to be encoded usually may correspond to previously decoded symbol values (or symbol values to be decoded). However, for the correspondence of features, reference is also made to the comparison of the corresponding claims, which define the related (or corresponding) concepts.
[0129] An embodiment in accordance with the present invention creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder comprising: k , R*p k ) is decoded by arithmetic decoding of one or more symbol values (e.g., binary values) into multiple state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics (e.g., an estimate of the probability that one or more symbols to be decoded contain a particular symbol value) of a plurality of symbol values (e.g., sequences of binary values 0 and 1) previously decoded with different adaptive time constants, and the arithmetic decoder is configured to derive a first state variable value (s k 1), or a scaled and / or rounded version thereof ([s k 1*a k1]) and uses a lookup table (LUT1) to map the second state variable value (s k 2), or a scaled and / or rounded version thereof ([s k 2*a k 2]), and interval size information (e.g., p k or R*p k ) to be obtained.
[0130] In a preferred embodiment, the arithmetic decoder uses a lookup table to determine the first state variable value, or a scaled and / or rounded version thereof ([s k 1*a k 1]) as the first probability value (p k 1 ), and the arithmetic decoder is configured to map the second state variable value, or a scaled and / or rounded version thereof ([s k 2*a k 2]) as the second probability value (p k 2 ), and the arithmetic decoder is configured to use the first probability value and the second probability value (e.g., using a weighted sum or weighted average) to obtain a joint probability value (pk). In a preferred embodiment, the arithmetic decoder is configured to change the state variable values in a first direction (e.g., more positive) if the decoded symbol has a first value (e.g., "1") and to change the state variable values in a second direction (e.g., more negative) if the decoded symbol has a second value (e.g., "0") different from the first value (e.g., such that the state variable values can have positive and negative values), and the arithmetic decoder determines the absolute value (s k i >0 then s k i , otherwise -s k i) (e.g., in response to a scaled and rounded version of the absolute value of the state variable value).
[0131] In a preferred embodiment, the arithmetic decoder is configured to generate a first probability value (p k 1) to values provided by a lookup table (e.g., TIFF2025015642000153.tif635), and the arithmetic decoder is configured to set a first probability value (p k 1) from a predetermined value (e.g., 1) to a value provided by a lookup table (e.g., TIFF2025015642000154.tif643).
[0132] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000155.tif1383LUT1 is a lookup table containing probability values, [.] is the floor operator, and s k i is the value of the i-th state variable, and a k i is a weighting value associated with the i-th state variable value (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby allowing two or more probability values p k i The method is configured to determine:
[0133] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000156.tif1399LUT1 is a lookup table containing probability values, [.] is the floor operator, and s k i is the value of the i-th state variable, and a k iis a weighting value associated with the i-th state variable value (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby allowing two or more probability values p k i The method is configured to determine:
[0134] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000157.tif1631 where N is the number of probability values considered (which may be equal to the number of state variable values considered), and b k i is a weighting value (e.g., a weighting coefficient that controls the influence of individual state variable values on the joint probability value) [b k i is preferably the integer value of von 2, and two different b k i The ratio between is preferably an integer value of 2. According to this, multiple probability values p k i Based on the joint probability value p k The method is configured to obtain
[0135] In a preferred embodiment, the arithmetic decoder uses a two-dimensional lookup table to find the first state variable value, or a scaled and / or rounded version thereof ([s k 1*a k 1]) to the first subinterval width value (R*p k 1), whose entries are addressed in dependence on the first state variable value (e.g., to determine a first lookup table entry coordinate) and in dependence on coding interval size information (e.g., R) describing a size of a coding interval for arithmetic decoding before decoding of a symbol (e.g., to determine a second lookup table entry coordinate), the arithmetic decoder uses a two-dimensional lookup table to map the second state variable value, or a scaled and / or rounded version thereof ([s k 1*a k1]) to the second subinterval width value (R*p k 2), whose entries are addressed (e.g., to determine a first lookup table entry coordinate) in dependence on the second state variable value (e.g., to determine a second lookup table entry coordinate) and in dependence on coding interval size information (e.g., R) describing a size of a coding interval for arithmetic decoding before decoding of a symbol, and the arithmetic decoder is configured to use the first subinterval width value and the second subinterval width value (e.g., using a weighted sum or weighted average) to obtain a combined subinterval width value.
[0136] In a preferred embodiment of the arithmetic decoder, a two-dimensional look-up table is provided whose entries represent probability values or scaled and / or rounded versions thereof ([s k *a k ]; TIFF2025015642000158.tif515), which forms a one-dimensional lookup table, and a second one-dimensional vector whose entries contain the quantization levels of the coding interval size information ( It can be expressed as a binomial product between the 202501564 and 2000159.tif514).
[0137] In a preferred embodiment of the arithmetic decoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (Base TabLPS), where a first group (or block, e.g., the “top half”) of elements of the two-dimensional lookup table are identical to or are rounded versions of the elements of the base lookup table, and a second group (or block, e.g., the “bottom half”) of elements of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0138] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional lookup table are right-shifted versions of the elements of the base lookup table.
[0139] In a preferred embodiment of the arithmetic decoder, the probability exponent (Qp2(p LPS );i) determines whether to evaluate elements of a first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table, and determines a probability index (e.g., a probability value, e.g., p LPS A first range (e.g., 0 to μ-1) of a probability index (e.g., a probability value, e.g., p LPS A second range (eg, μ or greater) of the elements of the second group of elements (obtained, for example, by quantifying with a quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0140] In a preferred embodiment of the arithmetic decoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, the extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on the interval size information R, for example by using a quantization operation Qr2(.), for example j) determines which element of the base lookup table to use to obtain an element of the two-dimensional lookup table.
[0141] In a preferred embodiment, the arithmetic decoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j), [i / μ]) BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., describing the current coding interval size), % is the division residual operation, / is the division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by[.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. The method is configured to obtain elements of a two-dimensional lookup table (RangTabLPS) according to the above.
[0142] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), which describes a set of multiple probability values (e.g., represented by an index i) and an interval size for a given coding interval size, and elements of the two-dimensional lookup table for probability values that are not in the set of multiple probability values and / or coding interval sizes different from the given (reference) coding interval size are derived from the probability table using scaling.
[0143] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional look-up table are obtained using a first (multiplicative) scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the coding interval size (R), and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table).
[0144] In a preferred embodiment of the arithmetic decoder, a division remainder (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2-[i / μ] ), and / or the coding interval size determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0145] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000160.tif5129i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000161.tif539.
[0146] In a preferred embodiment of the arithmetic decoder, the decoder is configured to obtain an element of the two-dimensional look-up table 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 (specified by the index i) is included in the probability value (e.g. depending on whether the current probability value is 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).
[0147] In a preferred embodiment of the arithmetic decoder, a division remainder ([i%μ]) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0148] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000162.tif5132i is a table index associated with the probability information, j is a table index associated with the interval size information, % is a division residual operation, / is a division operation (e.g., providing an integer result), probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is typically larger than μ), R is the interval size, Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to this, the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000163.tif539.
[0149] In a preferred embodiment, the arithmetic decoder receives the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k]) to the first and second subinterval width values (R*p k ), and calculating probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k 2*a k 2]) to the first and second probability values to find the first and second state variable values (s k ), or a scaled and / or rounded version thereof ([s k *a k ]), and quantizing coding interval size information (e.g., R) describing the size of the coding intervals for the arithmetic coding before encoding the symbols into quantization levels, determining a product between the first and second probability values and, on the one hand, the quantization levels (by looking up or multiplying pre-computed products), and obtaining a combined subinterval width value using the first subinterval width value and the second subinterval width value (e.g., using a weighted sum or weighted average). In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
[0150] In a preferred embodiment, the arithmetic decoder comprises coding interval size information Quantization of TIFF2025015642000164.tif43 TIFF2025015642000165.tif561, wherein: TIFF2025015642000166.tif33, TIFF2025015642000167.tif33 and TIFF2025015642000168.tif34 is a parameter.
[0151] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table are stored as the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) increases.
[0152] In a preferred embodiment of the arithmetic decoder, different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size.
[0153] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table are stored as the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) increases with increasing rate. An embodiment in accordance with the present invention creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder comprising: k , R*p k ) is decoded by arithmetic decoding of one or more symbol values (e.g., binary values) into multiple state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of multiple symbol values (e.g., sequences of binary values 0 and 1) previously decoded with different adaptive time constants (e.g., estimates of the probability that one or more symbols to be decoded contain a particular symbol value), and the arithmetic decoder is configured to derive a combined state variable value (s k ) (which may be, for example, a weighted sum of the state variable values), a number of individual state variable values (s i k ), and the arithmetic decoder is configured to derive the basis for the combined state variable values (s k ), or a scaled and / or rounded version thereof ([s k 2*ak 2]) using a look-up table to generate interval size information (e.g., p k or R*p k ) is configured to obtain In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of the state variable values to obtain the combined state variable value.
[0154] In a preferred embodiment, the arithmetic decoder detects the state variable values ( TIFF2025015642000169.tif65) and associated weighting values ( TIFF2025015642000170.tif68 Combined state variable value (s k ) to get the rounded value ( TIFF2025015642000171.tif616).
[0155] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000172.tif1633s k 2 is the state variable value, N is the number of state variable values considered, [.] is the floor operator, and d k i is the weighting value associated with the state variable values (e.g., the weighting coefficients that control the influence of each individual state variable value on the joint state variable value) (d k i is preferably the power of two integer values, and two different d k i The ratio between two different d k i The ratio between the combined state variable values s k The method is configured to determine:
[0156] In a preferred embodiment, the arithmetic decoder is configured to change the state variable value in a first direction (e.g., more positive) if the decoded symbol has a first value (e.g., “1”) and to change the state variable value in a second direction (e.g., more negative) if the decoded symbol has a second value (e.g., “0”) different from the first value (e.g., such that the state variable value can have positive and negative values), and the arithmetic decoder determines the absolute value (s k i >0 then s k , otherwise -s k ) (e.g., in response to a scaled and rounded version of the absolute value of the combined state variable value).
[0157] In a preferred embodiment, the arithmetic decoder generates a probability value (p k ) to values provided by a lookup table (e.g., TIFF2025015642000173.tif637), and the arithmetic decoder is configured to set a probability value (p k ) from a predetermined value (e.g., 1) to a value provided by a lookup table (e.g., TIFF2025015642000174.tif640).
[0158] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000175.tif1181LUT2 is a lookup table containing probability values, [.] is the floor operator, and s k is the binding variable value, and a k is a weighting value associated with the joint state variable values (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby determining the joint probability value p kThe method is configured to determine:
[0159] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000176.tif1197LUT2 is a lookup table containing probability values, [.] is the floor operator, and s k is the binding variable value, and a k is a weighting value associated with the joint state variable values (e.g., a weighting value that fits the range of numbers of the i-th state variable value to some entries of the lookup table), thereby determining the joint probability value p k The method is configured to determine:
[0160] In a preferred embodiment, the arithmetic decoder generates the combined state variable values, or a scaled and / or rounded version thereof ([s k *a k ]) is converted to the subinterval width value (R*p k ), whose entries are addressed in dependence on the combined state variable value (e.g., to determine the coordinates of a first lookup table entry) and in dependence on coding interval size information (e.g., R) describing the size of a coding interval for arithmetic decoding before decoding of a symbol (e.g., to determine the coordinates of a second lookup table entry).
[0161] In a preferred embodiment of the arithmetic decoder, a two-dimensional look-up table is provided whose entries represent probability values for different value intervals of the value domain of the combined state variable values, or a scaled and / or rounded version thereof ([s k *a k ]; The first 1D vector ( TIFF2025015642000178.tif519, forming a one-dimensional lookup table), and a second one-dimensional vector whose entries contain the quantization levels of the coding interval size information ( It can be expressed as a binary product between TIFF2025015642000179.tif514).
[0162] In a preferred embodiment of the arithmetic decoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (Base TabLPS), where a first group (or block, e.g., the “top half”) of elements of the two-dimensional lookup table are identical to or are rounded versions of the elements of the base lookup table, and a second group (or block, e.g., the “bottom half”) of elements of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0163] In a preferred embodiment of the arithmetic decoder, the second group of elements of the two-dimensional lookup table are right-shifted versions of the elements of the base lookup table.
[0164] In a preferred embodiment of the arithmetic decoder, the probability exponent (Qp2(p LPS );i) determines whether to evaluate elements of a first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table, and determines a probability index (e.g., a probability value, e.g., p LPS A first range (e.g., 0 to μ-1) of a probability index (e.g., a probability value, e.g., p LPS A second range (eg, μ or greater) of the elements of the second group of elements (obtained, for example, by quantifying with a quantization function Qp2(.)) is associated with the elements of the second group of elements.
[0165] In a preferred embodiment of the arithmetic decoder, the division residual (i% μ) of the division between the probability index (i) and a first size value (e.g., μ, the size value describing, for example, the extension of the base lookup table in a first direction) and an interval size index (e.g., which can be obtained based on the interval size information R, for example by using a quantization operation Qr2(.), for example j) determines which element of the base lookup table to use to obtain an element of the two-dimensional lookup table.
[0166] In a preferred embodiment, the arithmetic decoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j), [i / μ]) BaseTabLPS is a base lookup table of dimension μxλ, i is a table index associated with probability information, j is a table index associated with interval size information (e.g., describing the current coding interval size), % is the division residual operation, / is the division operation, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by [.] is a floor operation, a is a constant preferably greater than or equal to 2, or b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using a right-shift bit-shift operation, and y determines whether and by how many bits to shift x to the right. According to this, the elements of a two-dimensional lookup table (RangTabLPS) are obtained.
[0167] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), which describes a set of multiple probability values (e.g., represented by an index i) and an interval size for a given coding interval size, and elements of the two-dimensional lookup table for probability values that are not in the set of multiple probability values and / or coding interval sizes different from the given (reference) coding interval size are derived from the probability table using scaling.
[0168] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional look-up table are obtained using a first (multiplicative) scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on the coding interval size (R), and a second scaling of the result of the first scaling depending on whether the element associated with the current probability value (specified by the index i) is included in the set of probability values (e.g. depending on whether the current probability value is within the range of probability values covered by the probability table).
[0169] In a preferred embodiment of the arithmetic decoder, a division remainder (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0170] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000180.tif5129i 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, probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is usually larger than μ), R is the interval size (or the current coding interval size), Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is the scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to Elements of a two-dimensional lookup table Configured to obtain TIFF2025015642000181.tif539.
[0171] In a preferred embodiment of the arithmetic decoder, the decoder is configured to obtain an element of the two-dimensional look-up table 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 (specified by the index i) is included in the probability value (e.g. depending on whether the current probability value is 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).
[0172] In a preferred embodiment of the arithmetic decoder, a division remainder (i%μ) of a division between a probability index (e.g., i, e.g., representing a current probability value) and a first size value (e.g., μ, e.g., the size value describes an extension of the probability table) determines which elements of the probability table are scaled in the first scaling, and / or an integer division result ([i / μ]) of a division between the probability index (i) and the first size value determines a scaling factor (2 -[i / μ] ), and / or the coding interval size (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0173] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000182.tif5132i is a table index associated with the probability information, j is a table index associated with the interval size information, % is a division residual operation, / is a division operation (e.g., providing an integer result), probTabLPS[] is the probability table, μ is the number of elements in the probability table (the range of values for I is typically larger than μ), R is the interval size, Qr2(R) is a scaling factor that depends on R, and Scal(x,y) is a scaling function (e.g., Scal(x,y)=[x*a -by ], where [.] is a floor operation, a is a constant preferably greater than or equal to 2, b is a constant preferably greater than or equal to 1, the scaling function is preferably implemented using right-shift bit-shift operations, and y determines whether and by how many bits x is right-shifted. According to this, the elements of the two-dimensional lookup table Configured to obtain TIFF2025015642000183.tif539.
[0174] In a preferred embodiment, the arithmetic decoder generates the combined state variable values, or a scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value (R*pk ), which may be calculated by computing probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; TIFF2025015642000184.tif519) is used to find the joint state variable values (s k ), or a scaled and / or rounded version thereof ([s k *a k ]; TIFF2025015642000185.tif519) to joint probability values, and by quantizing coding interval size information (e.g., R) describing the size of the coding interval for arithmetic coding before encoding the symbols into quantization levels, and by determining the product between the joint probability values and the quantization levels.
[0175] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
[0176] In a preferred embodiment, the arithmetic decoder comprises coding interval size information Quantization of TIFF2025015642000186.tif43 TIFF2025015642000187.tif561, wherein TIFF2025015642000188.tif33, TIFF2025015642000189.tif33 and TIFF2025015642000190.tif34 is a parameter.
[0177] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table are stored as the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k]) increases.
[0178] In a preferred embodiment of the arithmetic decoder, different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size. In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table are stored as the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]) increases with increasing rate.
[0179] In a preferred embodiment of the arithmetic decoder, the lookup table defines an exponential decay (eg, down from 0.5) (eg, within a tolerance of + / - 10% or + / - 20%).
[0180] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000191.tif13133z is a given (constant) offset value, TIFF2025015642000192.tif56 is one or more weighting values, TIFF2025015642000193.tif55 is one or more weighting values, A is TIFF2025015642000194.tif689 or updated only for one or more extreme values of the arguments by zeroing or reducing the magnitude Avoid leaving TIFF2025015642000195.tif55 in a given range of values (e.g. TIFF2025015642000196.tif55 TIFF2025015642000197.tif514 has a larger value domain; that is, TIFF2025015642000198.tif55 Subquantized to TIFF2025015642000199.tif514; For the extreme value of TIFF2025015642000200.tif514, TIFF2025015642000201.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000202.tif514, TIFF2025015642000203.tif44, TIFF2025015642000204.tif54, and TIFF2025015642000205.tif44 are the given parameters (examples are given above) According to this, multiple mutable state values Configured to update TIFF2025015642000206.tif65.
[0181] In a preferred embodiment, the arithmetic decoder uses a table lookup or calculation to It is configured to derive TIFF2025015642000207.tif636.
[0182] An embodiment in accordance with the present invention creates an arithmetic decoder for encoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder comprising one or more state variable values (s1 k , s2 k ), which represents statistics (e.g., estimates of the probability that one or more symbols to be decoded contain a particular symbol value) of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., statistics for different adaptation time constants if multiple state variable values are determined), and the arithmetic decoder also determines one or more state variable values (s i k) (e.g., associated with a given context mode, indicated by index k) k , R*p k ), which represents statistics (e.g., statistics of different adaptation time constants if multiple state variable values are determined) of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1), and the arithmetic decoder derives a first state variable value (s k 1) is configured to update.
[0183] In a preferred embodiment, the arithmetic decoder uses a lookup table (A) to determine (e.g., after decoding the symbol to be decoded) a second state variable value (s k 2) is configured to update.
[0184] In a preferred embodiment, the arithmetic decoder is configured to update the first state variable value and the second state variable value using different adaptive time constants.
[0185] In a preferred embodiment, the arithmetic decoder is configured to selectively increment or decrement the previous state variable value by a value determined using the lookup table depending on whether the symbol being decoded has a first value or a second value different from the first value.
[0186] In a preferred embodiment, the arithmetic decoder is configured to increase the previous state variable value by a relatively larger value if the previous state variable value is negative compared to when the previous state variable value is positive when the symbol to be decoded has a first value, and the arithmetic decoder is configured to decrease the previous state variable value by a relatively larger value if the previous state variable value is positive compared to when the previous state variable value is negative when the symbol to be decoded has a second value different from the first value (which is arrived at, for example, by appropriately selecting a look-up table).
[0187] In a preferred embodiment, the arithmetic decoder calculates a first value for a symbol to be decoded by subtracting a predetermined (e.g., fixed) offset value (z) from a previously calculated first state variable value ( TIFF2025015642000208.tif65), or a scaled and / or rounded version thereof ( TIFF2025015642000209.tif622) to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value, and the arithmetic decoder is configured to, when the symbol to be decoded takes a second value, determine an index of an entry in the lookup 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 inverse (multiplied by −1) version of the previously calculated first state variable value ( TIFF2025015642000210.tif68), or a scaled and / or rounded version thereof ( The method is configured to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value depending on the sum of the first state variable value (e.g., an inverse version of a previously calculated first state variable value).
[0188] In a preferred embodiment, the arithmetic decoder calculates a first value for a symbol being decoded based on a predetermined (e.g., fixed) offset value (z) and a previously calculated second state variable value ( TIFF2025015642000212.tif65), or a scaled and / or rounded version thereof ( TIFF2025015642000213.tif622), and the arithmetic decoder is configured to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value when the symbol to be decoded takes the second value, by calculating a predetermined (e.g., fixed) offset value (z) and an inverse (multiplied by −1) version of the previously calculated second state variable value ( TIFF2025015642000214.tif68), or a scaled and / or rounded version thereof ( The method is configured to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value in dependence on the sum of the second state variable value (e.g., an inverse version of a previously calculated second state variable value).
[0189] In a preferred embodiment, the arithmetic decoder uses a first scaling value (m k 1) to obtain the previously calculated first state variable value (s k 1), and the arithmetic decoder uses the second scaling value (m k 2) to obtain the previously calculated second state variable value (s k 2), the first scaling value differing from the second scaling value (and the first and second scaling values are preferably integer powers of 2, the ratio between the first scaling value and the second scaling value is preferably an integer power of 2, and the first scaling value and the second scaling value preferably differ by a factor of at least 8).
[0190] In a preferred embodiment, the arithmetic decoder uses a first scaling value (e.g., n k 1) configured to scale the value returned by the evaluation of the lookup table using The arithmetic decoder uses a second scaling value (e.g., n k 2) to scale a value returned by evaluation of the lookup table, the first scaling value being different from the second scaling value.
[0191] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000216.tif13122A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000217.tif56 is one or more weighting values, TIFF2025015642000218.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000219.tif55.
[0192] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000220.tif13137A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000221.tif56 is one or more weighting values, TIFF2025015642000222.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000223.tif55.
[0193] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000224.tif13136A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000225.tif56 is one or more weighting values, TIFF2025015642000226.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000227.tif55.
[0194] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000228.tif13140A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000229.tif56 is one or more weighting values, TIFF2025015642000230.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000231.tif55.
[0195] In a preferred embodiment of the arithmetic decoder, the entries of A decrease monotonically with increasing lookup table index.
[0196] In a preferred embodiment, the arithmetic decoder is TIFF2025015642000232.tif689 or updated by zeroing or reducing the magnitude to deviate only from one or more extreme values of the arguments Avoid leaving TIFF2025015642000233.tif55 in a given range of values (e.g. TIFF2025015642000234.tif55 TIFF2025015642000235.tif514 has a larger value domain; that is, TIFF2025015642000236.tif55 Subquantized to TIFF2025015642000237.tif514; For the extreme value of TIFF2025015642000238.tif514, TIFF2025015642000239.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000240.tif514, TIFF2025015642000241.tif44, TIFF2025015642000242.tif54, and TIFF2025015642000243.tif44 are the predefined parameters (an example is given above).
[0197] In a preferred embodiment of the arithmetic decoder, the last entry of the look-up table (which is addressed when the first state variable value reaches a predetermined range of values extending up to the maximum allowable value or when the first state variable value exceeds a predetermined threshold) is equal to zero.
[0198] In a preferred embodiment, the arithmetic decoder is configured to apply a clipping operation to the updated state variable values to keep the updated, clipped state variable values within a predetermined range of values.
[0199] In a preferred embodiment, the arithmetic decoder applies the following to the updated state variable values: TIFF2025015642000244.tif669, configured to apply a clipping operation according to TIFF2025015642000245.tif55 is TIFF2025015642000246.tif55 is the maximum allowed value, TIFF2025015642000247.tif55 is This is the minimum allowed value for TIFF2025015642000248.tif55.
[0200] In a preferred embodiment, the arithmetic decoder is configured to apply different scaling values to different context models (eg, such that at least one of the scaling values differs between two different context models).
[0201] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size information defined in one of the above embodiments.
[0202] An embodiment according to the invention creates an arithmetic decoder for decoding a plurality of symbols having symbol values (e.g., binary values), the arithmetic decoder storing a single state variable value (s k ), and the arithmetic decoder is configured to determine the combined state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value ( TIFF2025015642000249.tif59), whose entries are probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; TIFF2025015642000250.tif519) containing a one-dimensional lookup table ( TIFF2025015642000251.tif545 is used to calculate one state variable value (s k ), or a scaled and / or rounded version thereof ([s k *a k ]; TIFF2025015642000252.tif519) to joint probability values, and quantization levels ( This is done by quantizing coding interval size information (e.g., R) describing the size of the coding intervals of the arithmetic coding prior to arithmetic decoding of the symbol values to be encoded in a TIFF2025015642000253.tif514), the arithmetic decoder being further configured to determine a product between the probability value and the quantization level (by lookup or multiplication of a pre-computed product), and the arithmetic decoder being configured to perform an update of the state variable values depending on the symbol to be decoded (actually decoded).
[0203] In a preferred embodiment, the arithmetic decoder generates one state variable value (s k ) as a combined state variable value (which may be, for example, a weighted sum of state variable values), as multiple state variable values (s i k ) (e.g., a sequence of binary values 0 and 1) (e.g., in the case of multiple state variable values, statistics for different adaptation time constants), which represents statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) for different adaptation time constants.
[0204] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of the state variable values to obtain the combined state variable value.
[0205] In a preferred embodiment, the arithmetic decoder detects the state variable values ( TIFF2025015642000254.tif65) and associated weighting values ( TIFF2025015642000255.tif68 Combined state variable value (s k ) to get the rounded value ( TIFF2025015642000256.tif616).
[0206] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000257.tif1633s k 2 is the state variable value, N is the number of state variable values considered, [.] is the floor operator, and d k i is the weighting value associated with the state variable values (e.g., the weighting coefficients that control the influence of each individual state variable value on the joint state variable value) (d k i is preferably the power of two integer values, and two different d k i The ratio between two different d k i The ratio between the combined state variable values s k The method is configured to determine
[0207] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000258.tif13133z is a given (constant) offset value, TIFF2025015642000259.tif56 is one or more weighting values, TIFF2025015642000260.tif55 is one or more weighting values, A is TIFF2025015642000261.tif689 or updated by zeroing or reducing the magnitude to deviate only from one or more extreme values of the arguments Avoid leaving TIFF2025015642000262.tif55 in a given range of values (e.g. TIFF2025015642000263.tif55 TIFF2025015642000264.tif514 has a larger value domain; that is, TIFF2025015642000265.tif55 Subquantized to TIFF2025015642000266.tif514; For the extreme value of TIFF2025015642000267.tif514, TIFF2025015642000268.tif55 is modified by the uncorrected A according to the formula above and can leave its value domain: to avoid this, consider that the entries corresponding to these extreme values may be reduced or zeroed out), TIFF2025015642000269.tif514, TIFF2025015642000270.tif44, TIFF2025015642000271.tif54, and TIFF2025015642000272.tif44 are the given parameters (examples are given above) According to this, when updating the state variable values, multiple state variable values Configured to update TIFF2025015642000273.tif65.
[0208] In a preferred embodiment, the arithmetic decoder uses a table lookup or calculation to It is configured to derive TIFF2025015642000274.tif636.
[0209] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000275.tif13137A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000276.tif56 is one or more weighting values, TIFF2025015642000277.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000278.tif55.
[0210] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000279.tif13136A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000280.tif56 is one or more weighting values, TIFF2025015642000281.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000282.tif55.
[0211] In a preferred embodiment, the arithmetic decoder comprises: TIFF2025015642000283.tif13140A is a lookup table (e.g., contains integer values), z is a predefined (constant) offset value, TIFF2025015642000284.tif56 is one or more weighting values, TIFF2025015642000285.tif55 is one or more weighting values, according to which one or more updated state variable values The image is configured to determine TIFF2025015642000286.tif55.
[0212] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
[0213] In a preferred embodiment, the arithmetic decoder comprises coding interval size information Quantization of TIFF2025015642000287.tif43 TIFF2025015642000288.tif561, wherein TIFF2025015642000289.tif33, TIFF2025015642000290.tif33 and TIFF2025015642000291.tif34 is a parameter.
[0214] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table store one state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) increases.
[0215] In a preferred embodiment of the arithmetic decoder, different value intervals of the value domain of one state variable value, or scaled and / or rounded versions thereof ([s k *a k ]) are of equal size.
[0216] In a preferred embodiment of the arithmetic decoder, the entries of the one-dimensional lookup table store one state variable value, or a scaled and / or rounded version thereof ([s k *a k ]) increases with increasing rate.
[0217] An embodiment according to the invention provides for creating a video encoder configured to encode a plurality of video frames, the video encoder comprising an arithmetic encoder for providing an encoded binary sequence based on a sequence of binary values representing video content according to any of the embodiments above.
[0218] It should be noted that the arithmetic encoder discussed herein is very suitable for use inside a video encoder. In this case, the coded symbols and / or previously coded symbols may be symbols of a video bitstream. For example, the coded symbols and / or previously coded symbols may represent bits of side information or control information representing the video content and / or bits of coded transform coefficients. In other words, the coded symbols and / or previously coded symbols may represent any of the information included in the bitstream to represent the video content. However, it should be noted that the state variable values may be determined separately for different "contexts", i.e., different types of information. For example, only bits associated with a particular type of information (e.g., a particular type of side information) may contribute to a particular state variable value, or a particular set of state variable values, used to obtain a particular combined state variable value. Thus, the interval size information may also be derived separately for different contexts, i.e., for the coding of symbol values associated with different types of information (e.g., side information).
[0219] An embodiment according to the invention provides for creating a video decoder, the video encoder being configured to decode a plurality of video frames, the video decoder comprising an arithmetic decoder (120; 220) for providing a decoded binary sequence (e.g. based on decoded symbol values) based on an encoded representation of the binary sequence (211) according to any of the above embodiments. A video decoder is based on the same considerations as a video encoder, so the above explanation also applies, and the coded symbols or symbols to be coded correspond to the decoded symbols.
[0220] It is further noted that further embodiments according to the invention create respective methods and computer programs.
[0221] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: k , R*p k ) is expressed as a set of state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of a plurality of symbol values (e.g., sequences of binary values 0 and 1) previously encoded with different adaptive time constants, and the method includes deriving a first state variable value (s k 1), or a scaled and / or rounded version thereof ([s k 1*a k 1]) and uses a lookup table (LUT1) to map the second state variable value (s k 2), or a scaled and / or rounded version thereof ([s k 2*a k 2]), and providing interval size information (e.g., p k or R*p k ) to be obtained.
[0222] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: k , R*p k ) is expressed as a set of state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of multiple symbol values (e.g., sequences of binary values 0 and 1) previously encoded with different adaptive time constants, and the method includes deriving a combined state variable value (sk ) (which may be, for example, a weighted sum of the state variable values), a number of individual state variable values (s i k ), and the arithmetic decoder is configured to derive the basis for the combined state variable values (s k ), or a scaled and / or rounded version thereof ([s k 2*a k 2]) using a look-up table to generate interval size information (e.g., p k or R*p k ) is obtained.
[0223] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (binary values), the method comprising: k , s2 k ), which represents statistics (e.g., in the case of multiple state variable values, statistics of different adaptation time constants) of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1), and the method further includes determining a time constant for one or more state variable values (s i k ) (e.g., associated with a given context mode, indicated by index k) k , R*p k ), which represents statistics (e.g., in the case of multiple state variable values, statistics of different adaptation time constants) of a plurality of previously encoded symbol values (e.g., a sequence of binary values 0 and 1), and the method includes deriving a first state variable value (s k This includes updating 1).
[0224] An embodiment according to the invention creates a method for decoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: k, R*p k ) is decoded by arithmetic decoding of one or more symbol values (e.g., binary values) into multiple state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents a statistic (e.g., an estimate of the probability that one or more symbols to be decoded contain a particular symbol value) of a plurality of symbol values (e.g., sequences of binary values 0 and 1) previously decoded with different adaptive time constants, and the method includes deriving a first state variable value (s k 1), or a scaled and / or rounded version thereof ([s k 1*a k 1]) and uses a lookup table (LUT1) to map the second state variable value (s k 2), or a scaled and / or rounded version thereof ([s k 2*a k 2]), and providing interval size information (e.g., p k or R*p k ) to be obtained.
[0225] An embodiment according to the invention creates a method for decoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: k , R*p k ) is decoded by arithmetic decoding of one or more symbol values (e.g., binary values) into multiple state variable values (s i k ) (e.g., associated with a given context mode denoted by index k), which represents statistics of multiple symbol values (e.g., sequences of binary values 0 and 1) previously decoded with different adaptive time constants (e.g., an estimate of the probability that one or more symbols to be decoded contain a particular symbol value), and the method includes deriving a combined state variable value (s k) (which may be, for example, a weighted sum of the state variable values), a number of individual state variable values (s i k ), the method includes deriving a basis for the combined state variable values (s k ), or a scaled and / or rounded version thereof ([s k 2*a k 2]) using a look-up table to generate interval size information (e.g., p k or R*p k ) is obtained.
[0226] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: k , s2 k ), which represents statistics (e.g., estimates of the probability that one or more symbols to be decoded contain a particular symbol value) of a plurality of previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., statistics for different adaptation time constants if multiple state variable values are determined), and the method further includes determining one or more state variable values (s i k ) (e.g., associated with a given context mode, indicated by index k) k , R*p k ), which represents statistics (e.g., statistics of different adaptive time constants if multiple state variable values are determined) of a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1), and the arithmetic decoder derives, depending on the symbol to be decoded, a first state variable value (s k This includes updating 1).
[0227] An embodiment according to the invention makes the method executed by an encoder and a decoder according to one of the above embodiments.
[0228] An embodiment according to the invention creates a computer program for carrying out a method according to one of the above embodiments, when the computer program is run on a computer.
[0229] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: i k ) is the interval size value (R LPS ) (which is associated with a given context mode, e.g., denoted by index k), which represents statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., using different adaptation time constants), and the method derives an interval size value (R LPS ), the dimension of which is smaller than the number of possible probability indices i, in terms of probability indices, and the method includes determining one or more state variable values (e.g., i=Qp(p LPS If the probability index (i) obtained based on the base lookup table (such as ) is within a first range (e.g., less than μ), the determined interval size value is identical to an element of the base lookup table or is a rounded version of an element of the base lookup table, and if the probability index is within a second range (e.g., equal to or greater than μ), the interval size value (R LPS ), the method includes determining an interval size value (R LPS ) to perform arithmetic coding of one or more symbols.
[0230] An embodiment according to the invention creates a method for encoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: ik ) (which is associated with a given context mode indicated by index k) LPS ), which represents statistics of a number of previously coded symbol values (e.g., sequences of binary values 0 and 1) (e.g., with different adaptive time constants); the arithmetic decoder derives an interval size value (R) based on (current) probability values derived from one or more state variable values and based on the (current) coding interval size (R) using a probability table (Prob TabLPS) (whose dimension in terms of probability indexes is smaller than the number of possible probability indexes i). LPS ), the probability table describing a set of a plurality of probability values (e.g., for a probability index between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, the method comprising: determining an interval size value (R ) for a (single) given (reference) coding interval size; if the current probability value is not in the set of a plurality of probability values (e.g., for a probability index associated with a current probability value equal to or greater than μ) and / or if the current coding interval size (R ) is different from the given (reference) coding interval size, the method further comprising: determining an interval size value (R ) for a (single) given (reference) coding interval size; LPS ) to obtain an interval size value (R LPS ) to perform arithmetic coding of one or more symbols.
[0231] An embodiment according to the invention creates a method for decoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: i k ) based on the interval size value (R LPS) (which is associated with a given context mode, e.g., denoted by index k), which represents statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., using different adaptation time constants), and the method derives an interval size value (R LPS ), the dimension of which is smaller than the number of possible probability indices i, in terms of probability indices, and the method includes determining one or more state variable values (e.g., i=Qp(p LPS If the probability index (i) obtained based on the base lookup table (such as ) is within a first range (e.g., less than μ), the determined interval size value is identical to an element of the base lookup table or is a rounded version of an element of the base lookup table, and if the probability index is within a second range (e.g., equal to or greater than μ), the interval size value (R LPS ), the method includes determining an interval size value (R LPS ) to perform arithmetic decoding of one or more symbols.
[0232] An embodiment according to the invention creates a method for decoding a plurality of symbols having symbol values (e.g., binary values), the method comprising: i k ) (which is associated with a given context mode indicated by index k) LPS ), which represents statistics of a number of previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., with different adaptive time constants); the arithmetic decoder derives an interval size value (R) based on (current) probability values derived from one or more state variable values and based on the (current) coding interval size (R) using a probability table (Prob TabLPS) (whose dimensions in terms of probability indexes are smaller than the number of possible probability indexes i).LPS ), the probability table describing a set of a plurality of probability values (e.g., for a probability index between 0 and μ-1) and an interval size (interval size value) for a (single) given (reference) coding interval size, the method comprising: determining an interval size value (R ) for a (single) given (reference) coding interval size; if the current probability value is not in the set of a plurality of probability values (e.g., for a probability index associated with a current probability value equal to or greater than μ) and / or if the current coding interval size (R ) is different from the given (reference) coding interval size, the method further comprising: determining an interval size value (R ) for a (single) given (reference) coding interval size; LPS ) to obtain an interval size value (R LPS ) to perform arithmetic decoding of the one or more symbols.
[0233] An embodiment according to the invention creates a computer program for carrying out a method according to one of the above embodiments, when the computer program is run on a computer.
[0234] The above methods are based on the same considerations as the above devices. However, it should be noted that the methods can also be optionally supplemented with any of the features, functions and details described herein with respect to the devices. These methods can also be optionally supplemented with said features, functions and details, both individually and in combination. The same applies to computer programs.
[0235] Subsequently, embodiments according to the present invention will be described with reference to the accompanying drawings, in which: [Brief description of the drawings]
[0236] [Figure 1] 1 shows a block schematic diagram of an apparatus for predictive coding of images in a data stream according to an embodiment of the invention; [Diagram 2] 2 shows a block schematic diagram of a decoder according to an embodiment of the present invention; [Diagram 3]2 shows a schematic diagram of the relationship between a reconstructed signal and a combination of a prediction residual and a prediction signal; [Figure 4] 2 shows a block schematic diagram of an arithmetic encoder according to an embodiment of the present invention; [Diagram 5] 2 shows a block schematic diagram of an arithmetic decoder according to an embodiment of the present invention; [Figure 6] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the present invention. [Figure 7] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the invention. [Figure 8] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the invention. [Figure 9] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the invention. [Figure 10a] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the present invention. [Figure 10b] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the present invention. [Figure 11] FIG. 2 shows a schematic diagram of a concept for determining interval size information according to an embodiment of the invention. [Figure 12] FIG. 2 shows a schematic diagram of a concept for determining one or more updated state variables according to an embodiment of the invention. [Figure 13] FIG. 2 shows a schematic diagram of a concept for determining interval size values according to an embodiment of the invention. [Figure 14] FIG. 2 shows a schematic diagram of a concept for determining interval size values according to an embodiment of the invention. [Figure 14] FIG. 2 shows a schematic diagram of a concept for determining interval size values according to an embodiment of the invention. [Figure 15] FIG. 2 shows a schematic diagram of a concept for determining interval size values according to an embodiment of the invention. [Figure 16] 1 shows a schematic diagram of a video decoder according to an embodiment of the invention; [Figure 17]1 shows a schematic diagram of a video decoder according to an embodiment of the invention; DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0237] 1. Encoder according to Fig.1 The following diagrammatic description begins with a description of an encoder (FIG. 1) and a decoder (FIG. 2) of a block-based predictive codec for coding images of a video to form an example coding framework into which embodiments of the present invention may be incorporated. Each encoder and decoder is described with respect to FIGS. 1 to 3. Below, a description of an embodiment of the inventive concept is presented together with an explanation of how such concepts may be incorporated into the encoder and decoder of FIGS. 1 and 2, respectively, although the embodiments described in subsequent FIG. 4 onwards may also be used to form encoders and decoders that do not operate according to the coding framework underlying the encoder and decoder of FIGS. 1 and 2.
[0238] Embodiments in accordance with the present invention may include video encoders and video decoders, as described with respect to Figures 1 and 2. Any of the concepts disclosed herein may also be used in, for example, entropy coder 34 or entropy decoder 50, as described with reference to Figures 1 and 2.
[0239] FIG. 1 shows an apparatus for predictively coding an image 12 into a data stream 14, exemplarily using transform-based residual coding. The apparatus or encoder is indicated using the reference number 10. FIG. 2 shows a corresponding decoder 20, i.e. an apparatus 20 configured to predictively decode an image 12' from the data stream 14 also using transform-based residual decoding, the apostrophe being used to indicate that the image 12' reconstructed by the decoder 20 deviates from the image 12 originally encoded by the apparatus 10 in terms of coding losses introduced by quantization of the predictive residual signal. Although FIG. 1 and FIG. 2 exemplarily use transform-based predictive residual coding, the embodiments of the present application are not limited to this type of predictive residual coding. This also applies to other details described with respect to FIG. 1 and FIG. 2, as outlined below.
[0240] The encoder 10 is configured to subject the prediction residual signal to a spatial-to-spectral transform and to encode the resulting prediction residual signal into a data stream 14. Similarly, the decoder 20 is configured to decode the prediction residual signal from the data stream 14 and to subject the resulting prediction residual signal to a spectral-to-spatial transform.
[0241] Internally, the encoder 10 may comprise a prediction residual signal former 22 which generates a prediction residual 24 to measure the deviation of a prediction signal 26 from the original signal, i.e. from the image 12. The prediction residual signal former 22 may for example be a subtractor which subtracts the prediction signal from the original signal, i.e. from the image 12. The encoder 10 then further comprises a transformer 28 which subjects the prediction residual signal 24 to a spatial-to-spectral transformation to obtain a spectral domain prediction residual signal 24', which is then quantized by a quantizer 32 also included in the encoder 10. The prediction residual signal 24'' thus quantized is coded into the bitstream 14. For this purpose, the encoder 10 may optionally comprise an entropy coder 34 which entropy codes the prediction residual signal once transformed and quantized 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' coded into the data stream 14 and decodable from this stream. For this purpose, the prediction stage 36 may internally include an inverse quantizer 38, as shown in FIG. 1, which inverse quantizes the prediction residual signal 24'', so as to obtain a spectral domain prediction residual signal 24''', which corresponds to the signal 24' except for the quantization losses, followed by an inverse transformer 40, which subjects the latter prediction residual signal 24''' to an inverse transformation, i.e., a spectral to spatial transformation, to obtain a prediction residual signal 24'''', which corresponds to the original prediction residual signal 24 except for the quantization losses. A combiner 42 of the prediction stage 36 then recombines the prediction signal 26 and the prediction residual signal 24'''', for example by addition, to obtain a reconstructed signal 46, i.e., a reconstruction of the original signal 12. The reconstructed signal 46 may correspond to the signal 12'. A prediction module 44 of the prediction stage 36 then generates the prediction signal 26 based on the signal 46, for example by using a spatial prediction, i.e., an intra-picture prediction, and / or a temporal prediction, i.e., an inter-picture prediction.
[0242] 2. Decoder according to Fig. 2 Similarly, as shown in Fig. 2, the decoder 20 may be internally constructed from components corresponding to the prediction stage 36 and interconnected in a corresponding manner thereto. In particular, an entropy decoder 50 of the decoder 20 is able to entropy decode the quantized spectral domain prediction residual signal 24'' from the data stream, in which an inverse quantizer 52, an inverse transformer 54, a combiner 56 and a prediction module 58, interconnected and coordinated as described above with respect to the modules of the prediction stage 36, recover a reconstructed signal based on the prediction residual signal 24'' such that the output of the combiner 56 provides the reconstructed signal, i.e. the image 12', as shown in Fig. 2.
[0243] Although not specifically described above, it is readily apparent that the encoder 10 can set several coding parameters, including, for example, prediction modes, motion parameters, etc., according to several optimization schemes, such as, for example, methods that optimize several rate- and distortion-related criteria, i.e., coding cost. For example, the encoder 10 and the decoder 20 and corresponding modules 44, 58 can support different prediction modes, such as intra-coding and inter-coding modes, respectively. The granularity at which the encoder and the decoder switch between these prediction mode types corresponds to the subdivision of the images 12 and 12', respectively, into coding segments or coding blocks. In units of these coding segments, for example, the images can be subdivided into intra-coded and inter-coded blocks. As outlined in more detail below, the intra-coded blocks are predicted based on the spatial, already coded / decoded neighborhood of the respective blocks. Several intra-coding modes can exist and are selected for each intra-coded segment, including a directional or angular intra-coding mode, according to which the respective intra-coded segments are filled by extrapolating the neighboring sample values along a particular direction specific to the respective directional intra-coding mode. The intra-coding modes may also include one or more further modes, such as, for example, a DC coding mode in which the prediction of each intra-coded block assigns a DC value to all samples in the respective intra-coded segment, and / or a planar intra-coding mode in which the prediction of each block is approximated or determined based on neighboring samples to be a spatial distribution of sample values described by a two-dimensional linear function over the sample positions of the respective intra-coded block, with the slope and offset of the planar drive defined by the two-dimensional linear function. In comparison, inter-coded blocks may, for example, be predicted temporally.In the case of inter-coded blocks, motion vectors may be signaled in the data stream, indicating the spatial displacement of the part of the previously coded image of the video to which the image 12 belongs, where the previously coded / decoded image is sampled, so as to obtain a prediction signal for the respective inter-coded block. This means that in addition to the residual signal coding contained in the data stream 14, such as the entropy-coded transform coefficient levels representing the quantized spectral domain prediction residual signal 24'', the data stream 14 may have encoded coding mode parameters for assigning coding modes to the various blocks, prediction parameters for some blocks, such as motion parameters for inter-coded segments, and optional additional parameters, such as parameters for controlling and signaling the subdivision of the images 12 and 12' into segments. The decoder 20 uses these parameters to subdivide the images in the same way as the encoder did, assign the same prediction modes to the segments, perform the same predictions and generate the same prediction signals.
[0244] 3. Function according to Figure 3 FIG. 3 shows the relationship between the reconstructed signal, i.e. the reconstructed image 12′, and the combination with the prediction residual signal 24″″ signaled in the data stream 14 on the one hand, and the prediction signal 26 on the other hand. As already indicated above, the combination may be additive. The prediction signal 26 is shown in FIG. 3 as a subdivision of the image region into intra-coding blocks, exemplarily shown using hatching, and inter-coding blocks, exemplarily shown without hatching. The subdivision can be any subdivision, such as a regular subdivision of the image region into rows and columns of square or non-square blocks, or a multi-tree subdivision of the image 12 from a tree root block into multiple leaf blocks of various sizes, such as a quad-tree subdivision, a mixture of which is shown in FIG. 3, where the image region is first subdivided into rows and columns of tree root blocks, and then further subdivided into one or more according to a recursive multi-tree subdivision.
[0245] Again, data stream 14 may have there coded intra-coding modes for intra-coding blocks 80 that assign one of several supported intra-coding modes to each intra-coding block 80. In the case of inter-coding blocks 82, data stream 14 may have one or more motion parameters coded therein. Generally speaking, inter-coding blocks 82 are not limited to being temporally coded. Alternatively, inter-coding blocks 82 may be any blocks predicted from previously coded portions beyond the current picture 12 itself, e.g., a previously coded picture of the video to which picture 12 belongs, or a picture of another view, or a hierarchically lower layer if the encoder and decoder are scalable encoder and decoder, respectively.
[0246] The prediction residual signal 24'''' in FIG. 3 is also shown as a subdivision of the image region into blocks 84. These blocks may be called transform blocks to distinguish them from the coding blocks 80 and 82. In effect, FIG. 3 shows that the encoder 10 and the decoder 20 can use two different subdivisions of the image 12 and the image 12', respectively, into blocks, namely one into the coding blocks 80 and 82, respectively, and another into the transform blocks 84. Although both subdivisions can be the same, i.e. each coding block 80 and 82 can simultaneously form a transform block 84, FIG. 3 shows the case, for example, where the subdivision into the transform blocks 84 forms an extension of the subdivision into the coding blocks 80, 82, such that any boundary between the two blocks 80 and 82 overlaps with the boundary between the two blocks 84, or alternatively, such that each block 80, 82 coincides with one of the transform blocks 84 or with a cluster of transform blocks 84. However, the subdivisions may also be determined or selected independently of one another, such that the transformation blocks 84 may alternately cross the block boundaries between the blocks 80, 82. Thus, as far as the subdivision into transformation blocks 84 is concerned, similar statements apply as those posed with regard to the subdivision into blocks 80, 82, i.e., the blocks 84 may be the result of a regular subdivision of the image region into blocks, a recursive multi-tree subdivision of the image region, or a combination thereof, or any other type of block (with or without arrangement in rows and columns). As an aside, it should be noted that the blocks 80, 82, 84 are not limited to being quadratic, rectangular or any other shape.
[0247] 3 further illustrates that the combination of the prediction signal 26 and the prediction residual signal 24'''' directly results in the reconstructed signal 12'. However, it should be noted that, according to alternative embodiments, more than one prediction signal 26 can be combined with the prediction residual signal 24''' to result in the image 12'.
[0248] In Fig. 3, the transform blocks 84 shall have the following meaning: the transformer 28 and the inverse transformer 54 perform their transforms 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 to skip the transform, so that for some transform blocks 84, the prediction residual signal is directly coded in the spatial domain. However, according to the embodiment described below, the encoder 10 and the decoder 20 are configured such that they support several transforms. For example, the transforms supported by the encoder 10 and the decoder 20 may include: oDCT-II (or DCT-III), where DCT stands for discrete cosine transform oDST-IV, DST stands for Discrete Sine Transform oDCT-IV oDST-VII oIdentity Transformation (IT)
[0249] Naturally, the transformer 28 supports all forward transform versions of these transforms, while the decoder 20 or inverse transformer 54 supports the corresponding backward or inverse versions. o Inverse DCT-II (or inverse DCT-III) o Reverse DST-IV o Inverse DCT-IV o Reverse DST-VII oIdentity Transformation (IT)
[0250] The following description provides further details about transforms that may be supported by the encoder 10 and the decoder 20. Note that in any case, the set of supported transforms may include only one transform, such as one spectral-to-spatial or spatial-to-spectral transform.
[0251] As already outlined above, Figures 1 to 3 are presented as examples in which the inventive concepts further described below can be implemented to form specific examples of encoders and decoders according to the present application. So far, the encoders and decoders of Figures 1 and 2 can represent possible implementations of the encoders and decoders described below in this specification. However, Figures 1 and 2 are merely examples. However, an encoder according to an embodiment of the present application can perform a block-based encoding of an image 12, using concepts outlined in more detail below, and differs from the encoder of Figure 1 in that it is still an image encoder, although it is not a video encoder, does not support inter-prediction, or the subdivision into blocks 80 is performed in a different way than illustrated in Figure 3. Similarly, a decoder according to an embodiment of the present application may perform block-based decoding of an image 12′ from a data stream 14, using concepts outlined in more detail below, but may differ from the decoder 20 of FIG. 2, for example in that it is still an image decoder, but not a video decoder, in that it does not support inter-prediction, or in that the subdivision of an image 12′ into blocks differs from that described in FIG. 3, and / or in that it derives prediction residuals from the data stream 14 in the spatial domain rather than the transform domain, etc.
[0252] 4. Arithmetic Encoder according to Fig. 4 FIG. 4 shows a block schematic diagram of an arithmetic encoder according to an embodiment of the present invention. The arithmetic encoder 400 according to Fig. 4 can be used, for example, in a video encoder, but optionally also in an audio encoder, an image encoder, an encoder for encoding coefficients of a neural network, etc.
[0253] The arithmetic encoder 400 is configured to receive encoded symbols 410, which may be represented by symbol values. Additionally, the encoder 400 typically also receives context information 412, which may describe, for example, what type of information is represented by the encoded symbols 410. For example, the context information 412 may be represented by a context index k, which describes, for example, what type of side information the encoded symbols 410 describe or what type of transform coefficients the symbols 410 encode.
[0254] Furthermore, the arithmetic encoder 400 is configured to provide a bitstream 420 representing the symbols 410 to be encoded or representing a sequence of the symbols 410 to be encoded.
[0255] The arithmetic encoder 400 comprises an arithmetic coding core or arithmetic encoder core 430, which receives the symbols to be coded 410 and provides a bit stream 420 based thereon. The arithmetic coding core or arithmetic encoder core 430 typically receives interval size information, which may represent, for example, the size of a subinterval (out of the total coding interval) to which a symbol (e.g., the least likely symbol) is mapped. Furthermore, the arithmetic coding core or arithmetic encoder core also provides coding interval size information 434, which describes the current coding interval size (e.g., the total size of the coding interval). It should be noted that the coding interval size 434 may vary over time depending on the symbols to be coded 410 (or, more precisely, depending on the sequence of the symbols to be coded 410).
[0256] The coding interval size may change, for example, due to a rescaling operation performed during the arithmetic coding process. For example, the arithmetic coding core may perform functions described in the High Efficiency Video Coding (HEVC) standard (H.265).
[0257] The arithmetic encoder 400 also comprises a coding interval size determination or coding interval size determiner 440. The coding interval size determination 440 receives the symbol to be coded 410, or at least one or more previously coded symbols, and preferably (but not necessarily) also receives context information 412. Furthermore, the interval size determination 440 receives coding interval size information 434. Based on the coding interval size information, the interval size determination 440 provides context information 412 for the symbol to be coded 410 (or at least one or more previously coded symbols) and, optionally, the interval size information 432 used by the arithmetic coding core 430.
[0258] Regarding the functioning of the concept according to FIG. 4, it should be noted that the interval size determination 440 serves to update the interval size information 432 (continuously, for example, for each new symbol to be coded). In this update, the statistics of the previously coded symbols are taken into account. Furthermore, the coding interval size information 434 provided by the arithmetic coding 430 is also taken into account, since the interval size information 432 should preferably be provided in a proper relationship with the coding interval size information 434. In this context, the coding interval size information 434 may represent, for example, the current size of the (total) coding interval (which may be caused by a renormalization of the coding interval that occurs from time to time), while the interval size information 432 may describe, for example, the size of the part in the entire (total) coding interval associated with a particular symbol (for example, the least likely symbol). Thus, the interval size information is usually smaller than the coding interval size information 434, since the interval size information 434 represents the size of the part of the coding interval associated with a particular symbol, while the interval size information 434 represents the total size of the coding interval. As a result, the interval size information 432 typically scales with the coding interval size information 434 (the scaling may optionally include some non-linear behavior to avoid situations where the coding is very inefficient).
[0259] Further concluding, by determining appropriate interval size information 432, taking into account the total size of the coding interval (represented by coding interval size information 434) and the statistics of previously coded symbols (as well as the context), arithmetic coding is performed in an efficient manner, and taking into account the statistics of previously coded symbols helps to improve coding efficiency.
[0260] However, it should be noted that the arithmetic encoder 400 according to Fig. 4 can be used in any of the signal encoders (e.g., video encoders) as disclosed herein. Furthermore, it should be noted that the arithmetic encoder 400 according to Fig. 4 can be optionally supplemented by any of the features, functions, and details described herein. In particular, the interval size determination 440 can use any of the concepts disclosed herein, both individually and in combination.
[0261] Concluding the arithmetic encoder 400 according to FIG. 4 may optionally be supplemented by any of the features, functions and details disclosed in this specification, both individually and in combination.
[0262] 5. Arithmetic decoder according to Fig. 5 shows a block schematic diagram of an arithmetic decoder 500 according to an embodiment of the present invention. The arithmetic decoder 500 is configured to receive a bit stream 510 (which may correspond to the bit stream 420) and, based thereon, provide decoded symbols 520 (or a sequence of decoded symbols 520). Typically, the decoded symbols 520 may correspond to the encoded symbols 410. Typically, the arithmetic encoder 400 and the arithmetic decoder 500, taken together, may perform lossless encoding and decoding, such that the symbols 410 encoded by the arithmetic encoder 400 provide a bit stream 420 that allows a "perfect" reconstruction when decoded by the arithmetic decoder 500, such that the decoded symbols 520 correspond to the encoded symbols 410.
[0263] The arithmetic decoder 500 comprises an arithmetic decoding core or arithmetic decoder core 530 that receives the bitstream and provides decoded symbols 520 based thereon. The arithmetic decoding core 530 typically provides coding interval size information 532 that may substantially correspond to the coding interval size information 434 and receives interval size information 534 that may correspond to the interval size information 432. The arithmetic decoder 500 also comprises a coding interval size determination or coding interval size determiner 540 configured to provide interval size information 534 used by the arithmetic decoding core 530 based on the coding interval size information 532 and based on one or more decoded symbols 520. Furthermore, the coding interval size determination 540 may optionally use context information 550, which may describe the type of information represented by the currently considered decoded symbol 520. Thus, the coding interval size determination 540 may determine the interval size information 534 for multiple different "contexts", i.e. multiple different types of decoded information (or different types of information to be decoded).
[0264] The arithmetic decoding core 530 may, for example, determine which sub-interval of the total coding interval (whose size is described by the coding interval size information) the value represented by the bit stream 510 is in, and therefore which symbol is represented in the bit stream. The size of the sub-interval of the total coding interval is described, for example, by the interval size information 534. For example, the interval size information 534 may describe the size of the sub-interval of the total coding interval associated with a particular symbol (e.g., the least likely symbol). Furthermore, it should be noted that due to renormalization, the coding interval size (e.g., the size of the total coding interval) may change from time to time (or even for each decoded symbol).
[0265] In conclusion, arithmetic decoding 500 is used to provide decoded symbols 520 based on a bitstream 510, and the history of previously decoded symbols (or more precisely, the statistics of previously decoded symbols) is used to (dynamically) adjust the interval size associated with the symbol to be decoded (the adjusted interval size is described by interval size information 534). Furthermore, it is noted that interval size determination 540 may be substantially identical to, for example, interval size determination 440. It is also noted that interval size determination 540 may include any of the functionality disclosed herein. Thus, any of the concepts for determining interval size may be used in interval size determination 540.
[0266] It should be noted that the arithmetic decoder 500 described herein can be used in any of the decoders described herein (e.g., audio decoders or video decoders), but the arithmetic decoder 500 can also be used for decoding images or neural network coefficients.
[0267] Generally speaking, the arithmetic decoder 500 described herein may be optionally supplemented by any of the features, functions and details disclosed herein, both individually and in combination.
[0268] 6. Concept of determining interval size information according to Fig. 6 Fig. 6 shows a schematic diagram of a concept for determining interval size information, which can be used, for example, in the arithmetic encoder 400 according to Fig. 4 or the arithmetic decoder 500 according to Fig. 5. 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, for example, to realize the interval size determination or interval size determiner 440 and / or to realize the interval size determination or interval size determiner 540.
[0269] The interval size determination 600 may, for example, receive one or more symbol values 610, which may correspond to the symbol to be encoded 410, a previously encoded symbol, or one or more previously decoded symbols 520. Additionally, the interval size determination 600 may optionally receive context information 612, which may, for example, be in the form of a context model index k. Additionally, the interval size determination 600 may provide interval size information 620, which may, for example, correspond to the interval size information 432 or may correspond to the interval size information 534.
[0270] The interval size determination includes a state variable update 640 that provides one or more updated state variables 642 based on one or more previously determined state variables 644, taking into account the symbol values 610, and optionally taking into account the context information 612. The state variable update 640 may also take into account one or more other parameters, which may be, for example, static or may be adapted to the respective context depending on, for example, the context information. For example, the state variable update 640 may include one or more weighting factors, i.e. TIFF2025015642000292.tif67 and / or TIFF2025015642000293.tif65 may be taken into account. The state variable updates 640 may also optionally take into account an "offset", e.g., z, and a lookup table, e.g., A. Furthermore, the state variable updates 640 may optionally be initialized to an initial value in response to an information signal that requires an initialization of the state variables to be performed. In case of initialization of the state variables, the previously determined state variable values 644 may be ignored and the "updated" state variables 642 may be set to an initial value, which may be determined in advance, for example.
[0271] Additionally, the interval size determination 600 comprises an interval size determination core that determines interval size information 620 based on updated state variables (or state variable values) 620. Additionally, the interval size determination core 650 can take into account, for example, coding interval size information 652, which may correspond, for example, to coding interval size information 432 or coding interval size information 532.
[0272] Thus, the interval size determination core 650 can provide interval size information describing the size of a subinterval associated with a particular symbol based on coding interval size information 652 describing the total size of the coding interval, and based on information regarding the statistics of previously encoded or previously decoded symbols, which is represented by one or more updated state variables 642.
[0273] However, it should be noted that the interval size determination 600 may be used in the arithmetic encoders and decoders described herein. Furthermore, the interval size determination 600 may be supplemented by any of the features, functions, and details disclosed herein. In particular, the state variable updates may use any of the concepts disclosed herein. Furthermore, the interval size determination core may also use any of the concepts disclosed herein.
[0274] It should be noted that any of the concepts described herein for updating state variables can be optionally combined with any of the interval size determination core concepts disclosed herein. Any of the features, functions, and details disclosed herein can be optionally introduced individually and in combination into concept 600. It should be noted that any of the features, functions, and details disclosed with respect to determining interval size information 620 based on one or more updated state variables 642 can be used independently with any of the features, functions, and details described with respect to updating state variables.
[0275] 7. Concept of interval size determination according to Fig. 7 Fig. 7 shows a schematic diagram of an interval size determination concept 700. In particular, Fig. 7 shows a concept that can utilize the functionality of an "interval size determination core". In other words, the concept 700 according to Fig. 7 is suitable for providing interval size information based on updated state variables and based on coding interval size information. However, the concept 700 according to Fig. 7 can be implemented in an interval size determination or interval size determiner.
[0276] Interval size determination 700, which can be considered as the "interval size determination core", receives updated state variables 710, which may correspond, for example, to updated state variables 642. Additionally, interval size determination 700 receives coding interval size information 712, which may correspond, for example, to coding interval size information 652. Optionally, interval size determination 700 also uses context information, such that the functionality of interval size determination 700 may be adjusted depending on the context. For example, the context information may be in the form of a context model index k. Thus, the particular functionality or parameters used in interval size determination 700 may be adapted depending on the actual context, as represented by the context model index k.
[0277] The interval size determination 700 provides interval size information 720 , which may correspond to the interval size information 620 . Thus, the interval size determination 700 may take the place of, for example, the interval size determination core 650 depicted in FIG.
[0278] Some details of the interval sizing core 700 are described below. It should be noted that the interval size determination core 700 includes a first processing path 730 and a second processing path 750, which may be considered alternatives. The first processing path 730 includes an (optional) scaling / rounding 732, which generates a first updated state variable (e.g., TIFF2025015642000294.tif65) is scaled and / or rounded. For example, the scaling factor TIFF2025015642000295.tif65 can be used. For example, scaling can be multiplication with a scaling factor. Rounding can be, for example, truncating to the next integer value less than or equal to the scaling result. Similarly, the first processing path 730 can include a second (optional) scaling / rounding 734, which can be, for example, a respective scaling factor (e.g., TIFF2025015642000296.tif65) TIFF2025015642000297.tif65), which may also include truncating to adjacent integer values below the result of the scaling. Thus, a first scaled and rounded state variable 733 and a second scaled and rounded state variable 735 may be obtained. Furthermore, the first processing path 730 may include a first lookup table based mapping 736 that receives the first scaled and / or rounded updated state variable 733 and further receives the quantized coding interval size information 762. For example, the first lookup table based mapping 736 may use a two-dimensional lookup table to obtain a first interval size contribution 737. Similarly, the first signal processing path 730 may include a second lookup table based mapping 738 that can receive the second scaled and / or rounded updated state variables 735 and the quantized coding interval size information 762 and provide a second interval size contribution 739 based thereon.
[0279] For example, the first lookup table based mapping 736 may use a two-dimensional lookup table, where the first lookup table index may be determined by the scaled and / or rounded first updated state variable 733, and the second lookup table index may be determined by the quantized coding interval size information 762. For example, the first scaled and / or rounded updated state variable 733 may take on integer values within a particular range (e.g., 0 to max, or 1 to max, or within a range acceptable for a first table index). Similarly, the quantized interval size information 762 may take on the form of integer values that can function as a second table index. For example, the quantized coding interval size information 762 may take on the form of integer values that can function as a second table index, where the first lookup table index may be determined by the scaled and / or rounded first updated state variable 733. In other words, both the first scaled and / or rounded update state variable 733 and the quantized coding interval size information 762 are used as table indexes to select an element of a lookup table to be used in the lookup table based mapping 736. Thus, the lookup table entry to be used is provided as the first interval size contribution 737.
[0280] However, the second lookup table based mapping 738 can be performed in the same manner, with the scaled and / or rounded second updated state variable 735 and the quantized coding interval size information 762 being used as two indexes (e.g., i and j) for the selection of an entry of the lookup table used in the second lookup table based mapping 738. Thus, the second interval size contribution 739 is obtained.
[0281] The first interval size contribution 737 and the second interval size contribution 739 may be combined in a combination 740, resulting in a combined interval size contribution 742. The combined interval size contribution 742 may serve directly as the interval size information 720, or the interval size information 720 may be derived from the combined interval size contribution 742 using post-processing (e.g., fixed scaling, or rounding, etc.).
[0282] In conclusion, when using the first processing pass 730, the interval size information 720 can be obtained by combining the results of two or more lookup table based mappings 736, 738, with the respective lookup table entries used being determined based on the respective updated state variables and based on the coding interval size information. Thus, the interval size information 720 can be obtained in a very efficient manner.
[0283] However, alternatively, processing as shown in second signal processing path 750 can be performed. The processing performed by the second signal processing path is significantly more computationally efficient at the cost of a slightly reduced accuracy. For example, the second signal processing path 750 includes a combine 751 in which the first updated state variable and the second updated state variable (and optionally additional updated state variables) are combined, thereby obtaining a combined updated state variable 751a. The second processing path 750 also includes an optional scaling / rounding 752, which may correspond, for example, 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 the lookup table-based mapping 756. The lookup table based mapping 756 is preferably a two-dimensional mapping, where a first index of the lookup table is determined by the combined updated state variables 751a or a scaled and / or rounded version 753 thereof, and a second index of the two-dimensional lookup table is determined by the quantized coding interval size information 762. Thus, the lookup table based mapping 756 provides an interval size contribution 757, which may be used as the interval size information 752 or may be derived from the interval size information 720 by optional post-processing (e.g., scaling).
[0284] In conclusion, the interval size determination core 700 is configured to obtain the interval size information 720 based on the updated state variables 710 and taking into account the coding interval size information 712. A lookup table based mapping is used in the first signal processing path 720 to determine two or more interval size contributions 737, 739 used to derive the interval size information 720. A lookup 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 lookup table based mapping that determines an index of the lookup table taking into account both the updated state variables and the coding interval size information 712, a particularly efficient calculation can be achieved, making it possible to save multiplication operations.
[0285] It should be noted that the interval size determination core 700 according to Figure 7 can be used in any of the arithmetic encoders and decoders described herein. Furthermore, the interval size determination core 700 can optionally be supplemented by any of the features, functions and details disclosed herein, both individually and in combination.
[0286] 8. Interval size determination core according to Fig. 8 Fig. 8 shows a block schematic diagram of an interval size determination core 800 according to an embodiment of the present invention. The interval size determination core 800 according to Fig. 8 may be used in any of the audio encoders and audio decoders disclosed herein.
[0287] The interval size determination core 800 also receives updated state variables 810 and coding interval size information 812. The updated state variables 810 may correspond, for example, to updated state variables 710 or updated state variables 642. The coding interval size information 812 may correspond, for example, to coding interval size information 712 or coding interval size information 652 or coding interval size information 532 or coding interval size information 434. Additionally, the interval size determination core 800 provides interval size information 820, which may correspond to interval size information 720 or interval size information 620 or interval size information 534 or interval size information 432.
[0288] The interval size determination core 800 may, for example, include a determination 830 of a probability value 832. The probability value 832 may, for example, be obtained based on one or more updated state variables 810 and may, for example, describe the probability of a symbol to be coded (e.g., a “0” or a “1”). The interval size determination core 830 may further include a determination 840 of a probability of a unlikely symbol (or a least likely symbol), which may provide a probability value 842 describing the probability of the unlikely or least likely symbol. The interval size determination core 800 also includes 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 that quantizes the coding interval size information to obtain a quantized coding interval size information 862. The interval size determination core 800 also comprises a mapping 870 that receives the quantized probability values 852 and the quantized coding interval size information 862 and maps both the quantized probability values 852 and the quantized coding interval size information 862 to the interval size information 820 .
[0289] In the following, some details regarding the functionality of the interval size determination core 800 will be explained. The determination 830 of the probability value 832 may include, for example, a first signal processing path 880 or a second signal processing path 890. It should be noted that the signal processing paths 880, 890 may be considered as alternatives. The first signal processing path 880 comprises a first mapping 882 that maps the first updated state variable 810 to a first probability value 883, for example using a lookup table. The first signal processing path 880 also includes a second mapping 884 that maps the second updated state variable 810 to a second probability value 885, for example using a lookup table. The first signal processing path 880 also includes a combination 886 that may be configured to combine the first probability value 883 and the second probability value 885, for example using a linear combination in which different scaling may be applied to the first probability value 883 and the second probability value 885 (and, optionally, quantization may be used). Thus, the combination 886 provides a probability value 832 .
[0290] Alternatively, a second signal processing path 890 can be used. The second signal processing path 890 includes a combination 892 that receives two or more updated state variables 810 and provides a combined updated state variable 893 based thereon (e.g., using a linear combination). Additionally, the second signal processing path 890 includes a mapping 894 that maps the combined updated state variable 893 to a probability value 832, e.g., using a lookup table.
[0291] It is therefore possible to obtain the probability value 832 using either the first signal processing path 880 or the second signal processing path 890, which can be considered as two different alternatives. The first signal processing path results in a slight increase in complexity since there are two mappings 882, 884 and also a slight increase in accuracy. In contrast, the second signal processing path 890 only involves a single mapping and therefore a slight decrease in complexity at the expense of a slight decrease in accuracy.
[0292] In determining 850 the probability of the unlikely symbol, the probability of the unlikely symbol may be determined, for example, by selecting the smaller value from the probability value 832 and the complement of the probability value (1 minus the probability value). Thus, a probability value 842 is obtained that represents the probability of the unlikely symbol. This probability value 842 may be, for example, calculated using a quantization function TIFF2025015642000298.tif55(.) or TIFF2025015642000299.tif58(.) is used in quantization 850. Thus, a quantized probability value or probability index i 852 is obtained and used in mapping 870.
[0293] The quantization 860 of the coding interval size information 812 may provide, for example, a quantized coding interval size value 862 or a quantized coding interval size index j. In some cases, however, both may be quantized coding interval size values Q r (R) and a coding interval size index j may be obtained, which may, for example, both be used in mapping 860. Mapping 860 may use a mapping mechanism that may, for example, be based on lookup table RangeTabLPS described herein, and / or based on lookup table BaseTabLPS described herein, and / or may use lookup table ProbTabLPS described herein. Optionally, a scaling function Scal(.) described herein may also be used in mapping 870.
[0294] In other words, there may be several 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 coding interval size index j.
[0295] As an additional remark, note that quantization 850 may, for example, map probability value 842 (or probability value 832 if decision 840 is omitted) to an integer value. Alternatively, quantization 850 may map value 842 (or value 832 if decision 840 is optionally omitted) to a value that has a lower numerical resolution than probability value 832 or probability value 842. However, quantized probability value 852 is preferably in the form of a probability index (e.g., i), i.e., a representation of an integer, which can be used as a table index to specify an entry in a lookup table (e.g., RangeTabLPS).
[0296] The quantization 860 may yield different results. The coding interval size information 812 may be quantized, for example, to the quantized coding interval size information 862, which includes a lower resolution than the coding interval size information 812. In other words, an interval of values of the coding interval size information 812 may be mapped to individual quantized values of the quantized coding interval size information 862, and the quantization may be, for example, linear or non-linear. Alternatively, or in addition, the coding interval size information may be mapped to a coding interval size index j, i.e., a continuous range of integer values that 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 quantized coding interval size information quantized to different values and quantized coding interval size information quantized to different indexes j (i.e., subsequent integer values) may be used. As noted above, the mapping 870 can be created using different concepts described herein.
[0297] In conclusion, the interval size determination core 800 can be used in any of the arithmetic encoders and decoders described herein. Furthermore, the interval size determination core 800 can be optionally supplemented by any of the features, functions and details disclosed herein, both individually and in combination.
[0298] 9. Interval size determination core according to Fig. 9 FIG. 9 shows a block schematic diagram of an interval size determination core 900 usable in any of the arithmetic encoders and decoders disclosed herein.
[0299] The interval size determination core 900 is configured to receive state variable values 910 and provide interval size information 920. Generally speaking, the interval size determination core 900 is configured to derive interval size information 920 of an arithmetic coding of one or more symbol values to be encoded (or an arithmetic decoding of one or more symbol values to be decoded) based on the state variable values 910, which represents statistics of a plurality of symbol values previously encoded with different adaptation time constants. The interval size determination core 900 includes an optional first scaling and / or rounding 930, in which a first state variable (which may be an updated state variable) is scaled and / or rounded. The interval size determination core 900 also includes an optional second scaling and / or rounding 934, in which 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.
[0300] 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 a 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 number 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, which maps the second state variable, or a scaled and / or rounded version 934 thereof, using a lookup table (e.g., a lookup table LUT1, or a two-dimensional lookup table defining R·LUT1 for a number 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.
[0301] Finally, interval size information 920 is obtained based on the first probability value 942 and based on the second probability value 952 . However, it should be noted that the determination of the first probability value 942 and the second probability value 952 should be considered only as examples of quantities that can be obtained using the first mapping 940 and the second mapping 950. In contrast, it would be possible to derive other quantities using the first mapping 940 and the second mapping 950, such as, for example, a contribution to the interval size information 920.
[0302] However, it should be noted that the interval size determination core 900 depicted in Figure 9 may be used in any of the arithmetic encoders or decoders disclosed herein. Furthermore, it should be noted that the interval size determination core 900 may be optionally supplemented by any of the features, functions, and details described herein, both individually and in combination.
[0303] 10. Determining Interval Size According to Figures 10a and 10b FIG. 10a shows a schematic diagram of a concept for determining interval size information, which can be used, for example, in an interval size determination core.
[0304] As can be seen, the concept of FIG. 10a receives a number of state variable values 1010a, 1010b that can correspond to the state variable value 910 and can update the state variable value. 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 that maps the first state variable value 1010a (or a scaled and / or rounded version thereof) to a first probability value 1042 that can correspond to the first probability value 942. Furthermore, the concept 1000 includes a second mapping 1050 that maps the second state variable value 1010b (or a scaled and / or rounded version thereof) to a second probability value 1052. Furthermore, the concept 1000 includes a combination of the first probability value 1042 and the second probability value 1052, which combination can be performed, for example, using equation (7). Thus, the combination 1060 provides a combination probability value 1062. Furthermore, the concept 1000 includes a multiplication 1070 of the combination probability value 1062, which may be performed with the coding interval size value R. Thus, the interval size information 1020 is obtained based on the multiplication 1070 between the combination probability value 1062a and the coding interval size value R. The interval size information 1020 may, for example, describe the size of the coding interval associated with the less likely or least likely symbol (or, alternatively, the size of the coding interval associated with the more likely or most likely symbol). Optionally, the concept 1000 may include a mechanism for deriving a probability of the less likely or least likely symbol (e.g., between the combination 1060 and the multiplication 1070) or may include a mechanism for deriving interval size information related to the less likely or least likely symbol based on the result of the multiplication 1070. Thus, the concept 1000 according to FIG. 10a can implement the functionality as described with respect to FIG.
[0305] It should be noted that concept 1000 may be used in any of the arithmetic encoders or decoders disclosed herein. Also, concept 1000 may be optionally supplemented by any of the features, functions, and details disclosed herein, both individually and in combination.
[0306] 10b shows a block schematic diagram of a concept 1080 for providing interval size information 1084 based on a first state variable value 1082a and a second state variable value 1082b. The concept 1080 includes a mapping 1085a of the first state variable value 1082a, or a scaled and / or quantized version thereof, to a first interval size contribution 1086a. Furthermore, the concept 1080 includes a second mapping 1085b that maps the second state variable value 1082b, or a scaled and / or quantized version thereof, to a second interval size contribution 1086b.
[0307] The first mapping 1085a and the second mapping 1085b may, for example, use a two-dimensional lookup table to perform the mapping. The two-dimensional lookup table may, for example, define a product between a quantized value of the coding interval size information R and a one-dimensional lookup table (e.g., LUT1) for multiple different values of R. In other words, each row or each column of the two-dimensional lookup table used in the mapping 1085a may define a product between a lookup table LUT1 described herein and the respective coding interval size value associated with the row or column. The same may apply to the two-dimensional lookup table used in the second mapping 1085b, which may be identical to or different from the lookup table used in the first mapping 1085a. Further, it should be noted that the coding interval size information may be used in the first mapping 1085a and the second mapping 1085b to select an appropriate element of a two-dimensional lookup table (e.g., the first lookup table index may be based on the respective state variable value and the second lookup table index may be based on the coding interval size value (or its quantized version Qr(R)).
[0308] Thus, the interval size information 1084 can be obtained with very low computational complexity. Furthermore, it is noted that appropriate processing can be inserted between the mappings 1085a, 1085b and the combination 1088 in which the interval size contributions 1086a, 1086b are combined to determine the contribution to the interval size of the interval associated with the least likely symbol or the least likely symbol. Alternatively, however, post-processing can be optionally inserted after the combination 1088 to determine the interval size of the least likely symbol or the less likely symbol based on the result of the combination 1088 of the interval size contributions 1086a, 1086b.
[0309] In conclusion, the concept 1080 according to FIG. 10b can be used to derive interval size information 1086 based on state variable values 1082a, 1082b and depending on the coding interval size information or coding interval size value. Furthermore, it should be noted that the concept 1080 can be used in any of the arithmetic encoders or decoders disclosed herein. Furthermore, it should be noted that the concept 1080 of FIG. 10b may be optionally supplemented by any of the features, functions, and details disclosed herein, both individually and in combination.
[0310] 11. Interval size determination core according to Fig. 11 FIG. 11 shows a block schematic diagram of an interval size determination core 1100 according to an embodiment of the invention.
[0311] The interval size determination core receives a plurality of (usually updated) state variable values 1110 and provides interval size information 1120 based thereon. Generally speaking, the interval size determination core 1100 is configured to derive interval size information of an arithmetic coding of one or more symbols to be encoded (or an arithmetic decoding of one or more symbol values to be decoded) based on the plurality of state variable values 1110, which represents statistics of a plurality of symbol values previously encoded (or previously decoded) with different adaptation time constants. The interval size determination core 1100 comprises a combiner / 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 scaler and / or rounder 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 includes a lookup table based mapping 1150 configured to use a lookup table to map the combined state variable value 1132, or a scaled and / or rounded version thereof 1142, to obtain interval size information describing the interval size (e.g., the size of an interval associated with a particular symbol, such as a less important symbol or a more important symbol) for arithmetic encoding / decoding. However, optionally, post-processing 1160 can be used to derive the interval size information 1120 based on the result 1152 of the lookup table based mapping 1150.
[0312] It should be noted that the interval size determination core 1100 can be used in any of the arithmetic encoders and decoders disclosed herein. Furthermore, it should be noted that the interval size determination core 1100 can be optionally supplemented by any of the features, functions, and details disclosed herein.
[0313] 12. Updating state variables according to Fig. FIG. 12 shows a block schematic diagram of a state variable update according to an embodiment of the present invention. The state variable update 1200 (which may be considered as a state variable updater) is configured to receive a symbol value 1210, which may be a symbol value of a symbol to be encoded or a symbol value of a previously decoded symbol (or a symbol value of a previously encoded symbol). Furthermore, the state variable update 1200 may be configured to receive one or more previously determined state variable values 1212 and provide one or more updated state variable values 1220. In particular, the state variable update 1200 may be configured to update a first state variable value using a lookup table depending on the symbol value (e.g., representing a symbol to be encoded or a previously encoded symbol or a previously decoded symbol). In other words, the state variable update 1210 may include a lookup table-based state variable update or a lookup table-based state variable updater 1230. Thus, an updated state variable value may be provided taking into account a symbol value based on a symbol to be encoded or a previously encoded symbol or a previously decoded symbol based on a corresponding previously determined state variable value.
[0314] Thus, state variable update 1200 may provide one or more updated state variable values. If multiple updated state variable values are determined, then the lookup table based state variable update may be performed for each state variable value individually (although the same mechanism and / or the same lookup table could be used, possibly with different scaling parameters and / or quantization functions). However, the state variable update 1200 described herein may be used in any of the arithmetic encoders and decoders disclosed herein. It should be noted, however, that the state variable update 1200 may be optionally supplemented by any of the features, functions, and details disclosed herein, taken individually and in combination.
[0315] 13. Interval size determination core according to Fig. 13 FIG. 13 shows a block schematic diagram of an interval size determination core 1300 according to an embodiment of the invention.
[0316] The interval size determination core receives one or more state variable values 1310, which may be, for example, updated state variable values, and provides an interval size value 1320 based on the one or more state variable values 1310. The interval size determination core includes a look-up table evaluation mechanism 1330 that receives a probability index 1332 that can be based on one or more state variable values 1310 and provides an interval size value 1320 .
[0317] For example, the probability index 1332 may be derived from one or more (updated) state variable values using a probability index derivation 1340 (which may include scaling and / or rounding and / or quantization). For example, one or more updated state variable values 1310 may be determined in an arithmetic encoder or decoder as disclosed herein and may represent statistics of a number of previously encoded symbol values.
[0318] Generally speaking, the interval size determination core 1300 is configured to determine an interval size value 1320 using a base lookup table 1350. A lookup table evaluation mechanism may be configured to determine the interval size value 1320 such that if a probability exponent 1332 obtained based on one or more state variable values is within 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 if the probability exponent 1332 is within a second range, a scaling 1360 (and optionally rounding) of an element of the base lookup table 1350 is used to obtain the determined interval size value. Thus, the interval size value 1320 may be used to perform arithmetic encoding or arithmetic decoding of one or more symbols.
[0319] In other words, for example, as shown in FIG. 8, a probability index 1332, which may be derived from one or more (updated) state variable values (first signal processing path 880 or second signal processing path 890, in combination with optional determination 840 and quantization 850), may be used to determine whether an entry in the base lookup table is used “as is” or is used in scaling 1360 (which may be determined by the probability index 1332).
[0320] In other words, the probability index 1332 can determine both which element of the base lookup table 1350 is selected, as shown generally at reference numeral 1370, and whether scaling of this selected entry of the base lookup table 1350 is performed, as shown symbolically at reference numeral 1380. For example, the selection of an entry of the base lookup table 1370 can be determined by one or more least significant bits of the probability index 1332, and the decision of whether scaling 1360 is performed 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 residual of the division of the probability index 1332 with a predetermined value, and the decision of whether to perform scaling 1360 can be made by determining in which range of a plurality of ranges the currently considered probability index value is.
[0321] Further, it should be noted that, optionally, for example, if the base lookup table is a two-dimensional table, the coding interval size information (e.g., R) may be taken into account in selecting an entry of the base lookup table 1350. In another optional alternative, the coding interval size information (e.g., R) may be used to determine whether additional scaling that depends on the coding interval size information needs to be performed (e.g., applied to the selected entry of the base lookup table) to obtain the interval size value 1320.
[0322] However, it should be noted that the interval size determination core 1300 described herein may be used in any of the arithmetic encoders and decoders disclosed herein to derive interval size values. Furthermore, it is noted that the interval size determination core 1300 may be optionally supplemented by any of the features, functions and details disclosed herein.
[0323] 14. Interval Size Determination Core FIG. 14 shows a block schematic diagram of an interval size determination core 1400 according to an embodiment of the invention.
[0324] The interval size determination core 1400 receives one or more state variable values 1410, which may be, for example, updated state variable values, and provides an interval size value 1420 based on the one or more state variable values 1410. The interval size determination core 1400 includes a look-up table evaluation mechanism 1430 that receives a probability index 1432 that can be based on one or more state variable values 1410 and provides interval size information or interval size value 1420.
[0325] For example, the probability index 1432 may be derived from one or more (updated state variable values using the probability index derivation 1440). For example, one or more updated state variable values 1410 may be determined in an arithmetic encoder or an arithmetic decoder as disclosed herein and may represent statistics of a number of previously encoded symbol values and / or a number of previously decoded symbol values.
[0326] Generally speaking, 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., a probability index 1432) derived from one or more state variable values 1410 and based on a coding interval size (e.g., described by coding interval size information 1412). For example, the probability table 1450 describes a set of multiple different probability values (or probability indexes 1432) and the interval size for a given coding interval size (e.g., a single given reference coding interval size). As seen in FIG. 14, the probability index 1432 can be used, for example, to select which element of the probability table should be used 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. Furthermore, the probability index 1432 is determined and its value causes the selected entry of the probability table to be scaled in scaling 1460. Generally speaking, the interval size determination core may be configured to scale an element or entry of the probability table (e.g., an element selected depending on the current probability value or probability index 1432) if the current probability value is not a set of multiple probability values and / or if the current coding interval size differs from a given (reference) coding interval size. In other words, the interval size value 1420 may be derived from a selected entry of the probability table 1450 using a scaling 1460, where the scaling may depend on both the probability value or probability index 1432 and the coding interval size information 1412.
[0327] For example, an entry of the probability table 1450 may be associated with a single coding interval size and a given range of probability values or probability indices (this range may typically cover more than two different probability values or probability indices, the number of entries of the probability table may preferably be a power of two to facilitate computational operations). The scaling 1460 may scale selected entries of the probability table 1460, for example, if the coding interval size 1412 differs from the reference coding interval size with which the entry of the probability table 1450 is associated. In other words, if the actual coding interval size 1412 differs from the reference coding interval size (e.g., the coding interval size with which the entry of the probability table 1450 is associated), the scaling 1460 may take this deviation into account (at least, 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). Additionally, scaling 1460 may also consider whether the probability value or probability index 1432 is outside of a range of probability values or probability indexes with which an entry in probability table 1450 is associated. For example, if an entry in probability table 1450 is associated with a first range of probability indexes, but the actual probability index 1432 is within a second range of indexes that does not overlap with the first range of probability indexes, scaling 1460 may apply additional scaling to account for this finding (in addition to scaling based on the deviation of the actual coding interval size from the reference coding interval size).
[0328] In conclusion, the interval size determination core 1400 can provide a selected entry of the probability table 1450 as the interval size value 1420, for which a probability table entry is provided, if the probability value or probability index 1432 is within the set of multiple probability values and if the actual coding interval size 1412 is equal to the reference coding interval size (or is quantized to a value equal to the reference coding interval size). On the other hand, if the probability value or probability index 1432 is outside the "set of multiple probability values" for which the probability table entry is provided and / or the actual coding interval size 1412 deviates from the reference coding interval size (e.g., by the amount that the actual coding interval size is quantized to a different value), the scaling 1460 scales the selected entry of the probability table 1450 to obtain the interval size value 1420.
[0329] Thus, the interval size value 1420 can be obtained using a relatively small lookup table 1450, which may be, for example, a one-dimensional probability table with a smaller number of entries (e.g., at least twice as many), which in turn may have several different possible probability values or probability index values. However, it should be noted that the interval size determination core 1400 may optionally be supplemented by any of the features, functions, and details described herein. Furthermore, it should be noted that the interval size determination core 1400 may optionally be used in any of the arithmetic encoders or arithmetic decoders disclosed herein, and in any of the video encoders or video decoders disclosed herein.
[0330] 15. Interval size determination core according to Fig. FIG. 15 shows a block schematic diagram of an interval size determination core 1500 according to an embodiment of the invention.
[0331] The interval size determination core 1500 is configured to receive one or more state variable values, which may be, for example, updated state variable values. For example, the one or more state variable values 1510 may include combined state variable values. Additionally, the interval size determination core 1500 is configured to provide an interval size value 1520, which may be, for example, a subinterval width value, e.g., R LPS It could be.
[0332] The interval size determination core 1500 includes optional mapping and / or rounding, which is used to determine one state variable value, which represents a statistic of multiple previously processed (e.g., previously encoded or previously decoded) symbol values. Generally speaking, the arithmetic encoder is configured to calculate a subinterval width value (e.g., interval size value 1520) for arithmetic encoding or arithmetic decoding of a symbol value to be encoded or decoded from a combined state variable value (e.g., from one updated combined state variable value 1510) or from a scaled and / or rounded version thereof. The interval size determination core 1500 includes, for example, a one-dimensional lookup table 1550 used to map the one state variable value (e.g., combined state variable value), or a scaled and / or rounded version thereof, to a probability value. For example, the entries of the one-dimensional lookup table 1550 include probability values for different value intervals of a value domain of the combined state variable value. Furthermore, the interval size determination core comprises a quantization 1560 configured to quantize the coding interval size information 1512 describing the size of the coding interval of the arithmetic coding or arithmetic decoding into a quantization level (e.g., before the arithmetic coding of the symbol values to be encoded or before the arithmetic decoding of the symbol values to be decoded). Thus, a quantized coding interval size information 1562 is provided. Furthermore, there is a scaling / multiplication 1570, which determines (e.g., using a lookup of a pre-computed product or using a multiplication) a product between the probability value and the quantization level (more precisely, the quantized coding interval size information 1562). For example, the probability value is provided by selecting an entry of the one-dimensional lookup table 1550 depending on the state variable value or a scaled and / or rounded version thereof. This probability value 1552 may then be scaled depending on the (quantized) coding interval size information 1562 (i.e., depending on the "quantization level"), the scaling corresponding to the determination of the product between the probability value and the quantization level. Therefore, the interval size value 1520 is provided in an efficient manner, and using a one-dimensional lookup table is sufficient.
[0333] However, it should be noted that the interval size determination core 1500 described here may be optionally supplemented by any of the features, functions, and details disclosed herein, both individually and in combination. Furthermore, it should be noted that the interval size determination core 1500 may be used in any of the arithmetic encoders and arithmetic decoders described herein, and in any of the video encoders and video decoders described herein.
[0334] 16. Video decoder according to FIG. FIG. 16 shows a block schematic diagram of a video decoder 1600 according to one embodiment of the present invention.
[0335] Video decoder 1600 is configured to receive encoded video information and provide decoded video information (or decoded video content) based thereon. The coded video information 1610 (which may be considered a video bitstream) may include, for example, slice type information and may also include a coded representation of a binary sequence. Optionally, the coded video information 1610 may include additional information, although this is not required for the invention.
[0336] Generally speaking, a video decoder may be configured to decode a plurality of video frames (e.g., a sequence of video frames), and the video decoder may be configured to decode a video frame that is, for example, subdivided into a set of one or more slices (preferably into a plurality of slices). The video decoder may be configured to evaluate slice type information, for example, included in the encoded video information 1610, indicating whether the slice is encoded using an independent coding mode, where there is no prediction of the video content of a current frame based on the video content of a previous frame, or using a single prediction mode, where there is prediction of a block of pixels based on one block of pixels of a previous frame, or using a bi-prediction mode, where there is prediction of a block of pixels based on two or more blocks of pixels of one or more previous frames, to select an operating mode for decoding the slice (which may be performed, for example, by a “video reconstruction” block 1680).
[0337] The video decoder 1600 comprises an arithmetic decoder 1620 configured to provide a decoded binary sequence 1622 (for use by a "video reconstruction" block) based on a coded representation of the binary sequence, included in the coded video information 1610. The arithmetic decoder preferably comprises a first source static value determination 1630 and a second source statistic value determination 1640. Thus, the arithmetic decoder 1620 is configured to determine a first source statistic value 1632 (e.g., a first state variable value) using a first window size (or using a first time constant) (e.g., a state variable update described herein may be used) and to determine a second source statistic value 1642 (e.g., a second state variable value) using a second window size (or using a second time constant) (e.g., a state variable update described herein may be used). The arithmetic decoder also optionally comprises a combiner 1650. Thus, the arithmetic decoder may be configured to determine a combined source statistical value 1652 (eg, a combined state variable value) based on the first source static value and the second source statistical value.
[0338] Additionally, the arithmetic decoder 1620 preferably comprises a range value determination 1660 (which may include, for example, an interval size determination core as described herein, or any of the interval size determinations as described herein). Thus, the arithmetic decoder may be configured to determine, based on the combined source statistics 1652 (or based on the first and second source statistics), one or more range values (or interval size information as described herein) for the interval subdivisions used for mapping the coded representation of the binary sequence (the coded video information 1610) to the decoded binary sequence 1622 (used by the video reconstruction block 1680).
[0339] Preferably, the arithmetic decoder 1620 also comprises an arithmetic decoding core 1670 (which may be, for example, a block or unit) that receives one or more range values 1662 from the range value determination 1660 and uses the range values to derive a decoded binary sequence 1622 from the encoded binary sequence contained in the encoded video information 1610. Further, the video decoder may include a video reconstruction block (or unit) 1680 that, for example, receives the decoded binary sequence 1622 and provides the decoded video content 1612 based on the decoded binary sequence 1622 (possibly taking into account additional control information, such as slice type information).
[0340] In conclusion, the arithmetic decoder 1600 receives the coded video information 1610 and performs arithmetic decoding of the coded representation of the binary sequence to derive the decoded binary sequence 1622. The arithmetic decoding utilizes knowledge about the probability of the binary values in the decoded binary sequence 1622. This knowledge about the probability (or estimated probability) of the binary values in the decoded binary sequence 1622 is taken into account by the arithmetic decoding core 1670 by relying on the range values 1662 that define the subdivision of the intervals. In simple terms, the arithmetic decoding core can use the range values 1662 to define different intervals (e.g. between 0 and 1, or over a range of integer values). The arithmetic decoding core can, for example, interpret the coded representation of the binary sequence as a representation of a numerical value that is in one of the intervals defined using the range values. By knowing in which interval the number represented by the coded representation of the binary sequence is in, the arithmetic decoding core 1670 can conclude which bit or which bit sequence was coded using the coded representation of the binary sequence.
[0341] However, it should be noted that this description of the arithmetic decoding core 1670 should only be considered as a very brief and general description. Details regarding the arithmetic decoding core can be found, for example, in the standards H.264 and H.265. However, different concepts (for the operation of the arithmetic decoding core) can also be found in the literature, and the details of the arithmetic decoding core are not particularly relevant for the present invention.
[0342] However, to obtain a suitable range value (enabling high bitrate efficiency), the arithmetic decoder 1620 (or, generally speaking, a video decoder) determines the two source statistics 1632, 1642 using different window sizes (the "window size" defines the degree of smoothing over multiple decoded binary values of the decoded binary sequence 1622). Furthermore, to increase the reliability of the range value provided to the arithmetic decoding core 1670, the first source statistics 1632 and the second source statistics 1642 are, in some embodiments, combined into a combined source statistics 1652.
[0343] Thus, the video decoder 1600 can be said to provide high efficiency because the range values used by the arithmetic decoding core 1670 are well matched to the actual probabilities of bit values (e.g., those of bit values "0" and "1" in the decoded binary sequence 1622).
[0344] As a supplement, 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 the provision of a fixed value (which may be independent of the decoded binary sequence, but may depend on one or more parameters). In this case, the arithmetic decoder is optionally configured to combine the first source statistics 1632 with a fixed non-zero value to obtain the combined source statistics 1652. It has been found that such a simplification may in some cases give good results, for example avoiding inappropriately strong fluctuations of the combined source statistics. In other words, by introducing a fixed contribution to the determination of the combined source statistics, it can be achieved that the combined source statistics can no longer deviate significantly from this fixed value. Thus, in case of the fortuitous presence of a longer sequence of identical bit values in the decoded binary sequence 1622, some "hindsight" on the statistics of the decoded binary sequence can be used to avoid a significant decrease in coding efficiency.
[0345] As a supplement, it should be noted that the functions of the arithmetic decoder (and the individual blocks of the arithmetic decoder) can also be generally considered as functions of the video decoder as a whole. In other words, the functions described herein as functions of the arithmetic decoder can also be performed by other blocks of the video decoder. Furthermore, it is noted that the video decoder 1600 according to FIG. 1 may be supplemented by any of the features, functions and details described in this specification, both individually and in combination.
[0346] 17. Video decoder according to Fig. 17 FIG. 17 shows a block schematic diagram of a video decoder 1700 according to an embodiment of the present invention. The video decoder 1700 is configured to receive encoded video information 1710 (e.g., a video bitstream) and, based thereon, provide decoded video content 1712 (e.g., a sequence of video frames). The encoded video information 1710 may include slice type information, for example, as described herein. The encoded video information 1710 may further include configuration information, which may also be considered control information. Additionally, the encoded video information 1710 may include encoded representations of binary sequences.
[0347] In Figure 17, two main blocks of a video decoder 1700 are shown: an arithmetic decoder 1720 and a video reconstruction 1780. However, it should be noted that the distribution of functions of the video decoder is not bound to a fixed block structure, but may vary widely. It should also be noted that an actual implementation of a video decoder may have additional blocks and / or functions that are well known to those skilled in the art.
[0348] The arithmetic decoder 1720 receives the coded representation of the binary sequence 1711. However, the arithmetic decoder (or a control block that may be outside the arithmetic decoder) may optionally receive slice type information and configuration information (or control information). In particular, the arithmetic decoder 1720 provides a decoded binary sequence 1722 to the video reconstruction 1780 based on the coded representation of the binary sequence 1711, optionally taking into account the slice type information and some or all of the configuration information or control information.
[0349] In the following, the function of the arithmetic decoder 1720 is explained in more detail. The arithmetic decoder includes an arithmetic decoding core 1770, which receives the coded representation of the 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 coded representation of the binary sequence 1711. For this purpose, the arithmetic decoding core 1770 checks which interval of the range of numerical values represented by the coded representation of the binary sequence 1711 lies. Depending on the determination of which interval out of a plurality of (at least two) intervals the number represented by the coded representation of the binary sequence 1711 lies in, a particular bit value, or a group of bit values, or a symbol, of the decoded binary sequence 1722 is recognized.
[0350] For the purpose of deriving the decoded binary sequence 1722, the arithmetic decoding core receives information about the intervals, which usually correspond to some extent to the probability of the bit values. In this case, the arithmetic decoding core 1770 receives "range values" or "interval size information" 1762 used for the interval subdivision (i.e. range values 1762 that serve to define the intervals of the number ranges used by the arithmetic decoding core 1770). In particular, it should be noted that the arithmetic decoding core 1770 can be similar or identical to an arithmetic decoding core used, for example, in a video encoder / decoder according to the standard H.264 or a video encoder / decoder according to the standard H.265. However, it should be noted that different approaches for realizing the arithmetic decoding core 1770 can also be used.
[0351] Considering the above discussion, it becomes clear that it is an important function of the arithmetic decoder 1720 to provide range values or interval size information 1762 that define the interval subdivision for the arithmetic decoding core 1770. Generally speaking, 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 that defines parameters such as, for example, initialization values, "window size", "window size fit", etc.
[0352] In the arithmetic decoder 1700, two source statistics determination blocks (or units) 1730, 1740 are used (which may correspond, for example, to the updating of state variables as described herein). For example, the first source statistics determination block 1730 determines the decoded binary sequence 1722 (x t The first source statistic determination block receives one or more previously decoded binary values (or symbol values) of the source statistic 1732 (also denoted as BITS ) and provides a first source statistic 1732 (which may correspond to a first state variable value described herein) based thereon. The first source statistic determination block may, for example, determine a constant or variable BITS , which defines the number of bits used to represent the source statistic 1732. a , and a constant or variable n that defines a “window size” for use by the source statistics determination block 1730.a , and / or any other parameters described herein. For example, the first source statistic determination block 1730 may recursively determine the first source statistic 1732, with a window size n a or parameter n i k determines the weighting of the last decoded binary value of the decoded binary sequence 1722 in determining the first source statistic or first state variable value 1732.
[0353] The function of the first source statistics determination block 1730 is similar to forming a sliding average with a particular window size, for example, except for the fact that a recursive algorithm is used that introduces some "infinite impulse response" properties. Thus, the first source statistics 1732 should be considered as a "virtual sliding window" operation, rather than exactly representing the results of a sliding window summation or averaging operation, since the results are very similar.
[0354] Moreover, the second source static value determination block 1740 performs similar operations when compared to the first source statistical value determination block 1730. However, the second source statistical value determination block 1740 usually performs different parameters (e.g., different window length n b and / or a different bitness parameter BITS b or different parameter n i k ) to provide a second source statistic or second state variable value 1742, which is typically different from the first source statistic or first state variable value 1732. For example, one of the source statistics 1732, 1742 may be a short-term (or shorter time period) average source statistic and one of the source statistics 1732, 1742 may be a long-term (or longer time period) average source statistic.
[0355] It should be noted that the source statistics determination blocks 1730, 1740 may perform functions such as those described for state variable updates herein, for example. It should also be noted that in some embodiments, different calculation rules may be used in the source statistics determination blocks 1730, 1740.
[0356] The arithmetic decoder 1720 optionally further comprises a combined source statistics determination block (or unit) 250 configured to receive the first source statistics 1732 and the second source statistics 1742. The source statistics combination block 1750 provides the combined source statistics 1752 based thereon. For example, the source statistics combination block 1750 may form a sum or an average of the first source statistics 1732 and the second source statistics 1742, thereby obtaining the combined source statistics 1752. However, the source statistics combination block 1750 may also apply different weights to the first source statistics 1732 and the second source statistics 1742 when deriving the combined source statistics 1752, and the different weights may vary within a slice or even between different slices.
[0357] For example, combine source statistics block 1750 may perform the function of combine 751 or combine 892. However, variations on this function are also possible. For example, in one (alternative) embodiment, the source statistics combination block 1750 combines only one of the first statistics with a fixed value, thereby obtaining a combined source statistics or combined state variable value 1752. Such a concept may be advantageous to avoid the combined source statistics 1752 deviating significantly from the expected probabilities of the binary values in the decoded binary sequence 1722.
[0358] The arithmetic decoder 1720 is configured to derive a range value 1762 of an interval subdivision (which is provided to the arithmetic decoding core 1770) based on the combined source statistics or combined state variable values 1752, or alternatively, based on two or more state variable values. This processing step can be considered, for example, as a "range value determination." For example, the range value determination can include an optional value process 1766 that receives the combined source statistical values 1752 and provides a probability value or a state index value based thereon. The value process 1766 can, for example, map the range of values of the combined source statistical values 1752 to a range between 0 and 1, a range between 0 and 0.5, or an integer index value.
[0359] Optionally, the value processing 1766 may provide information 1767, which may be binary information indicating whether the next decoded value (e.g., of the decoded binary sequence 1722) is likely to take a value of “1” or a value of “0”. Optionally, the arithmetic decoder (or range value determination) may include a mapping table 1769. The mapping table 1769 may, for example, receive an exponent value (e.g., pStateIdx) that specifies a table entry. Thus, the mapping table 1769 may provide one or more range values 1762 corresponding to the table entry specified by the exponent value (e.g., pStateIdx). Thus, by deriving a “state exponent value” (e.g., pStateIdx) and evaluating the mapping table based on the state exponent value, one or more range values for interval subdivision may be provided based on the combined source static value 1752.
[0360] The mapping table 1769 may have the same structure as the mapping table described in, for example, the H.264 standard or the H.265 standard. Optionally, however, the contents of the mapping table may be adapted to the specific details of a video decoder. In particular, the entries of the mapping table may be adapted to the statistical properties expected of a particular video decoder.
[0361] However, it should be noted that derivation of interval size information based on one or more state variable values, or based on combined state variable values, may be performed according to any of the concepts disclosed herein, such as using an interval size determination, using an interval size determination core, or using a state variable update as described with reference to any of Figures 4 through 15. Also, it should be noted that the arithmetic decoding cores referred to in this specification may correspond to any of the arithmetic decoding cores disclosed in this specification.
[0362] The arithmetic decoder (or, generally speaking, the video decoder) also optionally includes a control block 1790, which can receive control or configuration information and, based thereon, can adjust the parameters used to provide the range values (and possibly other parameters, e.g., additional parameters used by the arithmetic decoding core 1770). For example, the control block 1790 can receive one or more of the following slice type information, which may be included in the encoded video information 1710: “cabac init flag”, “ws_flag”, and “ctu_ws_flag”.
[0363] Further, the control 1790 may, for example, adjust the window size parameter n a , n b or n i kand / or the bit size parameters BITSa, BITSb. In particular, the control block 1790 may also take into account the current context model. In this regard, it should be noted that for each bit (or group of bits) of the decoded binary sequence 1722 to be decoded, it can be determined which context model to use. For example, the decision of which context model to use can be based on the fact that what type of information (decoding parameters, transform coefficients, etc.) is represented by the respective bit (or group of bits). For example, the control block 1790 may be configured to recognize the syntax of the decoded binary sequence 1722, thereby recognizing which syntax element (or which part of the syntax element, e.g., the most significant bit or the least significant bit, etc.) should be decoded next. Thus, a selection between different context models can be made. It should also be noted that the window size parameter and / or the bit size parameter and / or any other parameter may be selected depending on the context model. It should further be noted that the source statistics 1732, 1742 or the combined source statistics 1752 may be associated with a particular context model such that different source statistics or combined source statistics (or state variable values, or combined state variable values) values may be used with various context models. For example, the source statistics associated with a particular context model may be selectively provided based on the decoded binary values of the decoded binary sequence 1722 decoded using the respective context model. In other words, the parameter n a , n b , n i k , BITS a , BITS b etc., separate and independent processing, and separate (possibly independent) decisions, can be made for different context models.
[0364] Regarding the function of the control unit 1790, the control unit may, for example, determine the parameter na , n b , n i k , BITS a , BITS b Note that it is possible to determine, for example, the window size parameter n a , n b , n i k can be selected depending on slice type information, and / or depending on cabac init flag, and / or depending on ws_flag, and / or depending on ctu_ws_flag. Also, the bit size parameters BITSa, BITSb can be selected depending on some configuration information in some embodiments. However, in other embodiments, the bit size parameters can be fixed. For the mechanism of parameter adjustment, see, for example, the following description.
[0365] Turning now to the video reconstruction block 1780, it should be noted that the video reconstruction block 1780 typically also receives the decoded binary sequence 1722 and at least some elements of the configuration information. For example, the video reconstruction 1780 may reconstruct integer and / or floating-point parameters and / or image data based on the decoded binary sequence 1722. For example, there may be mapping rules that define how certain bits or portions of the decoded binary sequence should be mapped to integer parameters, floating-point parameters, or image data (e.g., transform coefficients, etc.). Thus, the video reconstruction block 1780 reconstructs information used to reconstruct video frames from the decoded binary sequence 1722. The video reconstruction block may then generate image information based on the reconstructed information (derived from the decoded binary sequence 1722).
[0366] For example, the video reconstruction 1780 may comprise the same functionality as described in the H.264 or H.265 standards. However, other approaches adapted to provide decoded video content based on the decoded binary sequence (and possibly additional configuration or control information) may also be used for the video reconstruction. Thus, the video reconstruction 1780 provides the decoded video content 1712, which may take the form as a sequence of video frames.
[0367] In conclusion, an overview of a video decoder according to an embodiment of the present invention has been provided. However, it should be noted that there are different implementations of the functional blocks (e.g., for the source statistics determination blocks 1730, 1740...
Claims
1. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder generates interval size information (p k , R * p k; ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762) by arithmetic coding of one or more symbol values into a plurality of state variable values (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742), which represents statistics of a number of symbol values previously encoded with different adaptive time constants, The arithmetic encoder uses a lookup table (LUT1) to find the first state variable value (s k 1 ), or its scaled and / or rounded version ([s k 1 *a k 1 ]) and Using the lookup table (LUT1), a second state variable value (s k 2 ), or its scaled and / or rounded version ([s k 2 *a k 2 ]) and 13. An arithmetic encoder adapted to obtain interval size information describing an interval size for arithmetic coding of one or more symbols to be encoded.
2. The arithmetic encoder uses the lookup table to find the first state variable value, or the scaled and / or rounded version thereof ([s k 1 *a k 1 ]) as the first probability value (p k 1 ) The arithmetic encoder uses the lookup table to obtain the second state variable value, or the scaled and / or rounded version thereof ([s k 2 *a k 2 ]) as the second probability value (p k 2 ) The arithmetic encoder of claim 1 , wherein the arithmetic encoder is configured to obtain a joint probability value (pk) using the first probability value and the second probability value.
3. the arithmetic encoder is configured to change the state variable value in a first direction when a symbol to be encoded has a first value and to change the state variable value in a second direction when a symbol to be encoded has a second value different from the first value; 3. An arithmetic encoder as claimed in claim 1 or 2, wherein the arithmetic encoder is arranged to determine which entry of the look-up table is evaluated in dependence on the absolute value of the respective state variable value.
4. The arithmetic encoder outputs a first probability value (p k 1 ) to a value provided by the lookup table; The arithmetic encoder outputs the first probability value (p k 1 4. The arithmetic encoder of claim 3, configured to set the first arithmetic unit 11 a to a value obtained by subtracting a value provided by the look-up table from a predetermined value.
5. The arithmetic encoder comprises: LUT1 is a lookup table containing probability values; [.] is the floor operator, s k i is the i-th state variable value, a k i is the weighting value associated with the i-th state variable value. This allows two or more probability values p k i An arithmetic encoder as claimed in claim 1 , configured to determine:
6. The arithmetic encoder comprises: LUT1 is a lookup table containing probability values; [.] is the floor operator, s k i is the i-th state variable value, a k i is the weighting value associated with the i-th state variable value. This allows two or more probability values p k i An arithmetic encoder as claimed in claim 1 , configured to determine:
7. The arithmetic encoder comprises: N is the number of probability values considered, and b k i is the weight value Accordingly, a number of probability values p k i Based on the joint probability value p k An arithmetic encoder according to claim 1 , configured to obtain:
8. The arithmetic encoder uses a two-dimensional lookup table to find the first state variable value, or the scaled and / or rounded version thereof ([s k 1 *a k 1 ]) to the first subinterval width value (R*p k 1 ), whose entries are addressed in dependence on the first state variable value and in dependence on coding interval size information describing a size of a coding interval of the arithmetic coding before encoding of a symbol, The arithmetic encoder uses the two-dimensional lookup table to find the second state variable value, or the scaled and / or rounded version thereof ([s k 2 *a k 2 ]) to the second subinterval width value (R*p k 2 ), whose entries are addressed in dependence on the second state variable value and in dependence on coding interval size information describing a size of a coding interval of the arithmetic coding before encoding of a symbol; 8. The arithmetic encoder of claim 1, wherein the arithmetic encoder is configured to use the first subinterval width value and the second subinterval width value to obtain a combined subinterval width value.
9. The two-dimensional lookup table is The entries are probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; ), and A second one-dimensional vector ( ) The arithmetic encoder of claim 8 , wherein the arithmetic encoder can be expressed as a two-term product between:
10. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (BaseTabLPS); a first group of elements of the two-dimensional lookup table that are identical to or are rounded versions of elements of the base lookup table; The arithmetic encoder of claim 8 , wherein the second group of elements of the two-dimensional lookup table are scaled and rounded versions of elements of the base lookup table.
11. The arithmetic encoder of claim 10 , wherein the second group of elements of the two-dimensional lookup table are right-shifted versions of elements of the base lookup table.
12. Probability index (Qp 2 (p LPS i) determines whether to evaluate elements of the first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table; a first range of probability indices is associated with elements of said first group of elements; An arithmetic encoder as claimed in claim 10 or 11, wherein a second range of probability exponents is associated with elements of the second group of elements.
13. 13. The arithmetic encoder of claim 12, wherein a division residual (i % μ) of a division between the probability index (i) and a first size value and an interval size index determines which element of the base lookup table is used to obtain the element of the two-dimensional lookup table.
14. The arithmetic encoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function.
14. An arithmetic encoder according to claim 9, configured to obtain elements of the two-dimensional lookup table (RangTabLPS) according to
15. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), the probability table describing a set of probability values and interval sizes for a given coding interval size; 9. The arithmetic encoder of claim 8, wherein elements of the two-dimensional lookup table for probability values not in the set of a plurality of probability values and / or coding interval sizes different from the given coding interval size are derived from the probability table using scaling.
16. The elements of the two-dimensional lookup table are using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values. The arithmetic encoder of claim 15, wherein the arithmetic encoder is obtained.
17. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) and / or The arithmetic encoder of claim 16 , wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
18. The arithmetic encoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Qr2(R) is a scaling factor that depends on R, 18. An arithmetic encoder according to claim 15, 16 or 17, wherein Scal(x,y) is a scaling function.
19. 16. The arithmetic encoder of claim 15, wherein an element of the two-dimensional lookup table is obtained using a first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether an element associated with a current probability value is included in the set of probability values, and using a second scaling of a result of the first scaling depending on the coding interval size (R).
20. a division residual ([i % μ]) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) and / or The coding interval size (R) is multiplied by the multiplicative scaling factor (Qr 2 20. The arithmetic encoder of claim 19, further comprising:
21. The arithmetic encoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, 21. An arithmetic encoder according to claim 15, 19 or 20, wherein Scal(x,y) is a scaling function.
22. The two-dimensional lookup table is The entries are probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k* a k ]; ), and A second one-dimensional vector ( ) 22. An arithmetic encoder according to claim 8, wherein the arithmetic encoder can be expressed as a two-term product between:
23. The arithmetic encoder comprises: The first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k ]) to obtain the first and second subinterval width values (R*p k ), which calculation comprises: The entries are probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k 2 *a k 2 ]) to obtain the first and second state variable values (s k ), or its scaled and / or rounded version ([s k *a k ]) to first and second probability values; and quantizing coding interval size information describing a size of a coding interval of said arithmetic coding before encoding symbols into quantization levels; determining a product between said first and second probability values and, on the one hand, said quantization levels; and 23. An arithmetic encoder as claimed in any preceding claim, which does this by using the first subinterval width value and the second subinterval width value to obtain a combined subinterval width value.
24. 24. The arithmetic encoder of claim 23, wherein 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.
25. The arithmetic encoder further comprises: The quantization of configured to execute 、 and 24. The arithmetic encoder of claim 23, wherein is a parameter.
26. The entries of the one-dimensional lookup table are the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 26. An arithmetic encoder as claimed in claim 24 or 25, wherein the arithmetic encoder monotonically decreases with increasing
27. Different value intervals of the value domain of the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 27. An arithmetic encoder as claimed in any of claims 23 to 26, wherein all of the arithmetic operations (a, b, c) are of the same size.
28. The entries of the one-dimensional lookup table are the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 28. The arithmetic encoder of claim 27, wherein the arithmetic encoder monotonically decreases with increasing .times. ...
29. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder generates interval size information (p k , R*p k ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762) by arithmetic coding of one or more symbol values into a plurality of state variable values (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742), which represents statistics of a number of symbol values previously encoded with different adaptive time constants, The arithmetic encoder is configured to encode the plurality of state variable values (s i k ) the underlying combined state variable value (s k ;751a;893;1132) configured to derive one The arithmetic encoder calculates the combined state variable value (s k ) or its scaled and / or rounded version ([s k 2 *a k 2 ] 753;) using a lookup table to obtain interval size information describing interval sizes for the arithmetic coding of one or more symbols to be encoded.
30. 30. The arithmetic encoder of claim 29, wherein the arithmetic encoder is configured to determine a weighted sum of state variable values to obtain the combined state variable value.
31. The arithmetic encoder calculates the combined state variable value (s k ) to obtain the state variable values ( ) and associated weighting values ( ) is rounded to the rounded value ( 31. An arithmetic encoder as claimed in claim 29 or 30, configured to determine the sum of
32. The arithmetic encoder comprises: s k 2 are the state variable values, N is the number of state variable values considered, [.] is the floor operator, d k i is a weighting value associated with the state variable value; According to this, the combined state variable value s k An arithmetic encoder according to any one of claims 29 to 31, configured to determine:
33. the arithmetic encoder is configured to change the state variable value in a first direction when a symbol to be encoded has a first value and to change the state variable value in a second direction when a symbol to be encoded has a second value different from the first value; 33. An arithmetic encoder according to any one of claims 29 to 32, wherein the arithmetic encoder is configured to determine which entry of the look-up table is evaluated in dependence on the absolute value of the combined state variable value.
34. The arithmetic encoder determines a probability value (p k ) to a value provided by the lookup table; The arithmetic encoder further comprises: if the combined state variable value has a second code, the probability value (p k 34. The arithmetic encoder of claim 33, configured to set a first arithmetic operation (a) to a value obtained by subtracting a value provided by the lookup table from a predetermined value.
35. The arithmetic encoder comprises: LUT2 is a lookup table containing probability values, [.] is the floor operator, s k is the binding variable value, a k is a weighting value associated with the combined state variable value As a result, the joint probability value p k 35. An arithmetic encoder according to any one of claims 29 to 34, configured to determine:
36. The arithmetic encoder comprises: LUT2 is a lookup table containing probability values, [.] is the floor operator, s k is the binding variable value, a k is a weighting value associated with the combined state variable value As a result, the joint probability value p k 35. An arithmetic encoder according to any one of claims 29 to 34, configured to determine:
37. The arithmetic encoder may further include a scaled and / or rounded version of the combined state variable value ([s k *a k ]) is converted to a subinterval width value (R*p k 37. An arithmetic encoder according to claim 29, configured to map an entry of said combined state variable value into a coding interval size information, the entry of which is addressed in dependence on the combined state variable value and in dependence on coding interval size information describing a size of a coding interval of said arithmetic coding before encoding of a symbol.
38. The two-dimensional lookup table is The entries are probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; ), and A second one-dimensional vector ( ) 38. The arithmetic encoder of claim 37, wherein the arithmetic encoder can be expressed as a two-term product between:
39. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (BaseTabLPS); a first group of elements of the two-dimensional lookup table that are identical to or are rounded versions of elements of the base lookup table; 38. The arithmetic encoder of claim 37, wherein the second group of elements of the two-dimensional lookup table are scaled and rounded versions of elements of the base lookup table.
40. 40. The arithmetic encoder of claim 39, wherein the second group of elements of the two-dimensional lookup table are right-shifted versions of elements of the base lookup table.
41. Probability index (Qp 2 (p LPS i) determines whether to evaluate elements of the first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table; a first range of probability indices is associated with elements of said first group of elements; 41. An arithmetic encoder as claimed in claim 39 or 40, wherein a second range of probability exponents is associated with elements of the second group of elements.
42. 42. The arithmetic encoder of claim 41 , wherein a division residual (i % μ) of a division between the probability index (i) and a first size value and an interval size index determines which element of the base lookup table is used to obtain the element of the two-dimensional lookup table.
43. The arithmetic encoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function.
43. An arithmetic encoder according to any one of claims 38 to 42, configured to obtain elements of the two-dimensional lookup table (RangTabLPS) according to
44. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), the probability table describing a set of probability values and interval sizes for a given coding interval size; 38. The arithmetic encoder of claim 37, wherein elements of the two-dimensional lookup table for probability values not in the set of a plurality of probability values and / or coding interval sizes different from the given coding interval size are derived from the probability table using scaling.
45. The elements of the two-dimensional lookup table are using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values.
45. The arithmetic encoder of claim 44, wherein the arithmetic encoder is obtained.
46. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) and / or 46. The arithmetic encoder of claim 45, wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
47. The arithmetic encoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Qr2(R) is a scaling factor that depends on R, 47. An arithmetic encoder according to claim 44, 45 or 46, wherein Scal(x,y) is a scaling function.
48. 45. The arithmetic encoder of claim 44, wherein an element of the two-dimensional lookup table is obtained using a first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether an element associated with a current probability value is included in the set of probability values, and using a second scaling of a result of the first scaling depending on the coding interval size (R).
49. a division residual ([i % μ]) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) and / or The coding interval size (R) is multiplied by the multiplicative scaling factor (Qr 2 49. The arithmetic encoder of claim 48, further comprising:
50. The arithmetic encoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, 50. An arithmetic encoder according to claim 44, 48 or 49, wherein Scal(x,y) is a scaling function.
51. The arithmetic encoder comprises: The combined state variable value, or the scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value (R*p k ), which calculation comprises: The entries are probability values for different value intervals of the value domain of said combined state variable values, or said scaled and / or rounded versions thereof ([s k *a k ]; ) to obtain the combined state variable value (s k ), or its scaled and / or rounded version ([s k *a k ]; ) to joint probability values; and This is done by quantizing coding interval size information describing a size of a coding interval of the arithmetic coding before encoding symbols into quantization levels, the arithmetic encoder further comprising:
51. An arithmetic encoder according to any one of claims 29 to 50, configured to determine a product between the joint probability value and the quantisation level.
52. 52. The arithmetic encoder of claim 51, wherein 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.
53. The arithmetic encoder further comprises: The quantization of configured to execute 、 and 52. The arithmetic encoder of claim 51, wherein is a parameter.
54. The entries of the one-dimensional lookup table are the combined state variable values, or the scaled and / or rounded versions thereof ([s k *a k 54. An arithmetic encoder as claimed in any of claims 51 to 53, wherein the arithmetic encoder monotonically decreases with increasing
55. The different value intervals of the value domain of the combined state variable values, or the scaled and / or rounded versions thereof ([s k *a k 55. An arithmetic encoder as claimed in any of claims 51 to 54, wherein all of the n, n+1, n+2, n+3, n+4, n+5, n+6, n+7, n+8, n+9, n+10, n+11, n+12, n+13, n+14, n+15, n+16, n+17, n+18, n+19, n+20, n+21,
56. The entries of the one-dimensional lookup table are the combined state variable values, or the scaled and / or rounded versions thereof ([s k *a k 56. The arithmetic encoder of claim 55, wherein the arithmetic encoder monotonically decreases with increasing m(n) ([n]) with a decreasing rate.
57. 57. An arithmetic encoder according to any one of claims 29 to 56, wherein the look-up table defines an exponential decay.
58. The arithmetic encoder comprises: z is a predetermined offset value, is one or more weighting values, is one or more weighting values, A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and is a given parameter In accordance with the above Multiple Mutable State Values 58. An arithmetic encoder according to any one of claims 29 to 57, configured to update
59. By table lookup or calculation configured to derive 59. An arithmetic encoder according to claim 58.
60. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder determines one or more state variable values (s 1 k , s 2 k 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742), which represents statistics of a plurality of previously encoded symbol values; and The arithmetic encoder determines the one or more state variable values (s i k ) based on the interval size information (p k , R*p k ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), which represents statistics of a plurality of previously encoded symbol values; The arithmetic encoder uses a look-up table (A) to determine a first state variable value (s k 1 )
61. The arithmetic encoder uses the look-up table (A) to determine a second state variable value (s k 2 61. The arithmetic encoder of claim 60 configured to update
62. 62. An arithmetic encoder according to claim 60 or claim 61, wherein the arithmetic encoder is configured to update the first state variable value and the second state variable value using different adaptive time constants.
63. 63. An arithmetic encoder as claimed in claim 60, 61 or 62, wherein the arithmetic encoder is configured to selectively increment or decrement a previous state variable value by a value determined using the lookup table depending on whether a symbol to be encoded has a first value or a second value different from the first value.
64. the arithmetic encoder is configured to increase a previous state variable value by a relatively larger value when the previous state variable value is negative compared to when the previous state variable value is positive when a symbol to be encoded has a first value; 64. An arithmetic encoder as claimed in any one of claims 60 to 63, wherein the arithmetic encoder is configured to decrease a previous state variable value by a relatively larger value when the previous state variable value is positive compared to when the previous state variable value is negative when a symbol to be encoded takes a second value different from the first value.
65. The arithmetic encoder calculates a first value for a symbol to be encoded by a predetermined offset value (z) and a previously calculated first state variable value ( ), or its scaled and / or rounded version ( ) to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value; The arithmetic encoder calculates a predetermined offset value (z) and an inverse version of a previously calculated first state variable value ( ), or its scaled and / or rounded version ( 65. An arithmetic encoder according to claim 60, configured to determine an index of an entry of the look-up table to be evaluated when updating the first state variable value in dependence on a sum of
66. The arithmetic encoder calculates a first value for a symbol to be encoded based on a predetermined offset value (z) and a previously calculated second state variable value ( ), or its scaled and / or rounded version ( ) to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value; The arithmetic encoder further comprises: an arithmetic encoder for encoding a second state variable value, the arithmetic encoder comprising: an arithmetic encoder for encoding a second state variable value, the ... ), or its scaled and / or rounded version ( 66. An arithmetic encoder according to claim 60, configured to determine an index of an entry of the look-up table to be evaluated when updating the second state variable value in dependence on the sum of
67. The arithmetic encoder uses a first scaling value (m k 1 ) to obtain the previously calculated first state variable value (s k 1 ) and The arithmetic encoder uses a second scaling value (m k 2 ) to obtain the previously calculated second state variable value (s k 2 ) and 67. An arithmetic encoder according to any one of claims 60 to 66, wherein the first scaling value is different from the second scaling value.
68. the arithmetic encoder is configured to scale values returned by evaluation of the lookup table using a first scaling value when updating the first state variable value; the arithmetic encoder is configured to scale values returned by evaluation of the lookup table using a second scaling value when updating the second state variable value; 68. An arithmetic encoder according to any one of claims 60 to 67, wherein the first scaling value is different from the second scaling value.
69. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 69. An arithmetic encoder according to any one of claims 60 to 68, configured to determine:
70. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 69. An arithmetic encoder according to any one of claims 60 to 68, configured to determine:
71. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 69. An arithmetic encoder according to any one of claims 60 to 68, configured to determine:
72. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 69. An arithmetic encoder according to any one of claims 60 to 68, configured to determine:
73. 73. An arithmetic encoder as claimed in any one of claims 69 to 72, wherein the entries of A decrease monotonically with increasing lookup table index.
74. A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and An arithmetic encoder according to claim 69 or 70 or 71 or 72 and 73, wherein: is a predetermined parameter.
75. 75. An arithmetic encoder according to any one of claims 60 to 74, wherein a last entry of the look-up table is equal to zero.
76. 76. An arithmetic encoder according to any one of claims 60 to 75, wherein the arithmetic encoder is configured to apply a clipping operation to the updated state variable values to keep the updated, clipped state variable values within a predetermined range of values.
77. The arithmetic encoder comprises: The updated state variable values are 、 configured to apply a clipping operation according to teeth, is the maximum allowable value of teeth, 77. The arithmetic encoder of claim 76, wherein n is the minimum allowable value of n .
78. 78. An arithmetic encoder according to any one of claims 60 to 77, wherein the arithmetic encoder is configured to apply different scaling values to different context models.
79. 79. An arithmetic encoder according to any one of claims 60 to 78, wherein the arithmetic encoder is configured to obtain the interval size information as defined in any one of claims 1 to 55.
80. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder determines one or more state variable values (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742) LPS ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), which represents statistics of a plurality of previously encoded symbol values, The arithmetic encoder uses a base lookup table (BaseTabLPS) to calculate the interval size value (R LPS ) configured to determine The arithmetic encoder is configured to scale the interval size value (R 1 ; 852; 1332; 1432; 1532) such that if a probability index (i; 852; 1332; 1432; 1532) obtained based on the one or more state variable values is within a first range, the determined interval size value is the same as an element of the base lookup table or is a rounded version of an element of the base lookup table, and if the probability index is within a second range, the determined interval size value is obtained using scaling and rounding of an element of the base lookup table. LPS ) is determined, The arithmetic encoder calculates the interval size value (R LPS ) to perform the arithmetic coding of one or more symbols.
81. The arithmetic encoder is configured to determine the interval size value, and the determined interval size value (R LPS 81. The arithmetic encoder of claim 80, wherein if the probability exponent is within the second range, then a right-shifted version of an element of the base lookup table.
82. The probability index (Qp2(p LPS )) is a function of whether the elements of the lookup table correspond to the interval size values (R LPS ), or whether the elements of the lookup table are provided as the interval size values (R LPS 82. An arithmetic encoder as claimed in claim 80 or 81, further comprising: a processor for determining whether to scale and round to obtain
83. 83. An arithmetic encoder as claimed in any one of claims 80 to 82, wherein a division residual (i % μ) of a division between the probability index (i) and a first size value and an interval size index determines which element of the base lookup table to use to obtain the interval size value.
84. The arithmetic encoder comprises: R XPS =Scale (Base Tab LPS [i%μ] [j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function. Accordingly, the interval size value R XPS 84. An arithmetic encoder according to any one of claims 80 to 83, configured to obtain:
85. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder determines one or more state variable values (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742) LPS ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), which represents statistics of a plurality of previously encoded symbol values, The arithmetic encoder determines the interval size value (R; 434; 532; 712; 812; 1362; 1460; 1512) using a probability table (Prob Tab LPS) based on probability values (733, 735; 832, 842, 852; 932, 934) derived from the one or more state variable values and based on a coding interval size (R; 434; 532; 712; 812; 1362; 1460; 1512). LPS ) configured to determine the probability table describing a set of probability values and interval sizes for a given coding interval size; The arithmetic encoder may further include a step of: determining whether a given coding interval size (R) is greater than the given coding interval size (R) if the current probability value is not in a set of a plurality of probability values and / or if the current coding interval size (R) is different from the given coding interval size (R). LPS ) and The arithmetic encoder calculates the interval size value (R LPS ) to perform the arithmetic coding of one or more symbols.
86. The arithmetic encoder comprises: using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values.
86. An arithmetic encoder as claimed in claim 85, configured to obtain an interval size value.
87. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or 87. The arithmetic encoder of claim 86, wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
88. The arithmetic encoder detects the interval size value R XPS configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, Scal(x,y) is the scaling function According to claim 86 or 87, an arithmetic encoder.
89. The arithmetic encoder comprises: using a first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on whether the element associated with the current probability value is included in the probability value; using a second scaling of the result of the first scaling according to the coding interval size (R); 86. An arithmetic encoder as claimed in claim 85, configured to obtain an interval size value.
90. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or an integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines a scaling factor used in the first scaling. and / or The coding interval size is multiplied by the multiplicative scaling factor (Qr 2 90. The arithmetic encoder of claim 89, further comprising:
91. The arithmetic encoder detects the interval size value R XPS configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, Scal(x,y) is the scaling function According to claim 89 or 90, an arithmetic encoder.
92. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24″; 520; 1622; 1722) having symbol values, comprising: The arithmetic decoder detects one or more state variable values (s i k arithmetic decoding interval size value (R LPS ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), which represents statistics of a number of previously decoded symbol values, The arithmetic decoder uses a base lookup table (BaseTabLPS) to determine the interval size value (R LPS ) configured to determine The arithmetic decoder is configured to: scale the interval size value (R ) such that, if a probability index (i; 852; 1332; 1432; 1532) obtained based on the one or more state variable values is within a first range, the determined interval size value is the same as an element of the base lookup table or is a rounded version of an element of the base lookup table; and, if the probability index is within a second range, the determined interval size value is obtained using scaling and rounding of an element of the base lookup table. LPS ) is determined, The arithmetic decoder detects the interval size value (R LPS ) to perform the arithmetic decoding of one or more symbols.
93. The arithmetic decoder is configured to determine the interval size value, and the determined interval size value (R LPS 93. The arithmetic decoder of claim 92, wherein if the probability exponent is within the second range, then the first element of the base lookup table is a right-shifted version of the element of the base lookup table.
94. The probability index (Qp2(p LPS )) is a function of whether the elements of the lookup table correspond to the interval size values (R LPS ), or whether the elements of the lookup table are provided as the interval size values (R LPS 94. An arithmetic decoder as claimed in claim 92 or 93, further comprising:
95. 95. An arithmetic decoder as claimed in any one of claims 92 to 94, wherein a division remainder (i % μ) of a division between the probability exponent (i) and a first size value and an interval size index determines which element of the base lookup table to use to obtain the interval size value.
96. The arithmetic decoder comprises: R XPS =Scale (Base Tab LPS [i%μ] [j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function. Accordingly, the interval size value R XPS 96. An arithmetic decoder according to any one of claims 92 to 95, configured to obtain:
97. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24″; 520; 1622; 1722) having symbol values, comprising: The arithmetic decoder detects one or more state variable values (s i k arithmetic decoding interval size value (R LPS ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762), which represents statistics of a number of previously decoded symbol values, The arithmetic decoder uses a probability table (ProbTabLPS) to determine the interval size value (R based on a probability value derived from the one or more state variable values and based on a coding interval size (R; 434; 532; 712; 812; 1362; 1460; 1512). LPS ) configured to determine the probability table describing a set of probability values and interval sizes for a given coding interval size; The arithmetic decoder may further comprise a decoder for decoding the given coding interval size value (R) if the current probability value is not in a set of a plurality of probability values and / or if the current coding interval size (R) is different from the given coding interval size. LPS ) and The arithmetic decoder detects the interval size value (R LPS ) to perform the arithmetic decoding of one or more symbols.
98. The arithmetic decoder comprises: using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values.
98. An arithmetic decoder according to claim 97 configured to obtain interval size values.
99. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or 99. The arithmetic decoder of claim 98, wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
100. The arithmetic decoder detects the interval size value R XPS configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, Scal(x,y) is the scaling function According to claim 98 or 99, an arithmetic decoder.
101. The arithmetic decoder comprises: using a first scaling of a selected element of the probability table (probTabLPS[i%μ]) depending on whether the element associated with the current probability value is included in the probability value; using a second scaling of the result of the first scaling according to the coding interval size (R); 98. An arithmetic decoder according to claim 97 configured to obtain interval size values.
102. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or an integer division result ([i / μ]) of the division between the probability index (i) and the first size value determines a scaling factor used in the first scaling. and / or The coding interval size is multiplied by the multiplicative scaling factor (Qr 2 102. An arithmetic decoder according to claim 101, further comprising:
103. The arithmetic decoder detects the interval size value R XPS configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, Scal(x,y) is the scaling function According to claim 101 or 102, an arithmetic decoder.
104. An arithmetic encoder (34; 400) for encoding a plurality of symbols (24'', 410) having symbol values, comprising: The arithmetic encoder generates a state variable value (s k ) configured to determine The arithmetic encoder may further include a scaled and / or rounded version of the combined state variable value ([s k *a k ]) to the subinterval width value ( ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762) for the arithmetic coding of the symbol values to be coded, this calculation being The entries are probability values for different value intervals of the value domain of said combined state variable values, or said scaled and / or rounded versions thereof ([s k *a k ]; ) containing a one-dimensional lookup table ( ) to obtain the one state variable value (s k ), or its scaled and / or rounded version ([s k *a k ]; ) into a probability value (p i k ;p k ;p LPS ;Q p (p LPS )) and Quantization level ( This is done by quantizing coding interval size information (R; 434; 532; 712; 812; 1362; 1460; 1512) describing a size of a coding interval of the arithmetic coding prior to the arithmetic coding of the symbol values to be coded to a coding interval size information (R; 434; 532; 712; 812; 1362; 1460; 1512), the arithmetic encoder further comprising: configured to determine a product between the probability value and the quantization level; the arithmetic encoder is configured to perform an update of state variable values in dependence on the symbol values to be encoded. Arithmetic encoder.
105. The arithmetic encoder receives a number of state variable values (s i k ) is calculated by dividing the combined state variable value (s k 105. The arithmetic encoder of claim 104 configured to derive as a function of time constant m, which represents statistics of the plurality of symbol values previously encoded with different adaptive time constants.
106. 106. The arithmetic encoder of claim 105, wherein the arithmetic encoder is configured to determine a weighted sum of state variable values to obtain the combined state variable value.
107. The arithmetic encoder calculates the combined state variable value (s k ) to obtain the state variable values ( ) and associated weighting values ( ) is rounded to the rounded value ( 107. An arithmetic encoder according to claim 105 or claim 106, configured to determine the sum of
108. The arithmetic encoder comprises: s k 2 are the state variable values, N is the number of state variable values considered, [.] is the floor operator, d k i is a weighting value associated with the state variable value; According to this, the combined state variable value s k 108. An arithmetic encoder according to any one of claims 105 to 107, configured to determine:
109. The arithmetic encoder comprises: z is a predetermined offset value, is one or more weighting values, is one or more weighting values, A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and is a given parameter In accordance with the above, when updating the state variable value, Multiple State Variable Values 109. An arithmetic encoder according to any one of claims 105 to 108, configured to update
110. By table lookup or calculation 110. An arithmetic encoder as claimed in claim 109, configured to derive:
111. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 109. An arithmetic encoder according to any one of claims 104 to 108, configured to determine:
112. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 109. An arithmetic encoder according to any one of claims 104 to 108, configured to determine:
113. The arithmetic encoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 109. An arithmetic encoder according to any one of claims 104 to 108, configured to determine:
114. 111. An arithmetic encoder according to any of claims 104 to 110, wherein 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.
115. The arithmetic encoder further comprises: The quantization of configured to execute 、 and An arithmetic encoder according to any of claims 104 to 110, wherein is a parameter.
116. The entries of the one-dimensional lookup table are the one state variable value or the scaled and / or rounded version thereof ([s k *a k 116. An arithmetic encoder according to any of claims 104 to 115, wherein the arithmetic encoder monotonically decreases with increasing
117. Different value intervals of the value domain of the one state variable value, or the scaled and / or rounded version thereof ([s k *a k 117. An arithmetic encoder as claimed in any of claims 104 to 116, wherein all of the arithmetic operations are of the same size.
118. The entries of the one-dimensional lookup table are the one state variable value or the scaled and / or rounded version thereof ([s k *a k 118. The arithmetic encoder of claim 117, wherein the arithmetic encoder monotonically decreases with increasing .times. ...
119. 1. An arithmetic decoder for decoding a plurality of symbols having symbol values, comprising: The arithmetic decoder receives interval size information (p k , R*p k ) to obtain a plurality of state variable values (s i k ), which represents statistics of a number of symbol values previously decoded with different adaptation time constants; The arithmetic decoder uses a lookup table (LUT1) to find the first state variable value (s k 1 ), or its scaled and / or rounded version ([s k 1 *a k 1 ]) and Using the lookup table (LUT1), a second state variable value (s k 2 ), or its scaled and / or rounded version ([s k 2 *a k 2 ]) to obtain interval size information describing interval sizes for arithmetic decoding of one or more symbols to be decoded.
120. The arithmetic decoder uses the lookup table to determine the first state variable value, or the scaled and / or rounded version thereof ([s k 1 *a k 1 ]) as the first probability value (p k 1 ) The arithmetic decoder uses the lookup table to determine the second state variable value, or the scaled and / or rounded version thereof ([s k 2 *a k 2 ]) as the second probability value (p k 2 ) 120. The arithmetic decoder of claim 119, wherein the arithmetic decoder is configured to obtain a joint probability value (pk) using the first probability value and the second probability value.
121. the arithmetic decoder is configured to change the state variable values in a first direction when a decoded symbol has a first value and to change the state variable values in a second direction when a decoded symbol has a second value different from the first value; 121. An arithmetic decoder according to claim 119 or 120, wherein the arithmetic decoder is configured to determine which entry of the look-up table is evaluated in dependence on the absolute value of the respective state variable value.
122. The arithmetic decoder outputs a first probability value (p k 1 ) to a value provided by the lookup table; The arithmetic decoder outputs the first probability value (p k 1 122. An arithmetic decoder according to claim 121 configured to set a first arithmetic operation (a) to a value obtained by subtracting a value provided by the lookup table from a predetermined value.
123. The arithmetic decoder comprises: LUT1 is a lookup table containing probability values, [.] is the floor operator, s k i is the value of the i-th state variable, a k i is the weighting value associated with the i-th state variable value This allows two or more probability values p k i 123. An arithmetic decoder according to any one of claims 119 to 122, configured to determine:
124. The arithmetic decoder comprises: LUT1 is a lookup table containing probability values, [.] is the floor operator, s k i is the value of the i-th state variable, a k i is the weighting value associated with the i-th state variable value This allows two or more probability values p k i 123. An arithmetic decoder according to any one of claims 119 to 122, configured to determine:
125. The arithmetic decoder comprises: N is the number of probability values considered, and b k i is the weight value Accordingly, a number of probability values p k i Based on the joint probability value p k 125. An arithmetic decoder according to any one of claims 119 to 124, configured to obtain:
126. The arithmetic decoder uses a two-dimensional lookup table to determine the first state variable value, or the scaled and / or rounded version thereof ([s k 1 *a k 1 ]) to the first subinterval width value (R*p k 1 ), whose entries are addressed in dependence on the first state variable value and in dependence on coding interval size information describing a size of a coding interval of the arithmetic decoding before decoding of a symbol; The arithmetic decoder uses the two-dimensional lookup table to determine the second state variable value, or the scaled and / or rounded version thereof ([s k 1 *a k 1 ]) to the second subinterval width value (R*p k 2 ) whose entries are addressed in dependence on the second state variable value and in dependence on coding interval size information describing a size of a coding interval of the arithmetic decoding before decoding of a symbol; 126. An arithmetic decoder according to any one of claims 119 to 125, wherein the arithmetic decoder is configured to use the first subinterval width value and the second subinterval width value to obtain a combined subinterval width value.
127. The two-dimensional lookup table is The entries are probability values for different value intervals of the value domain of the first and second state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; ), and A second one-dimensional vector ( ) 127. The arithmetic decoder of claim 126, wherein the arithmetic decoder can be expressed as a two-term product between:
128. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (BaseTabLPS); a first group of elements of the two-dimensional lookup table that are identical to or are rounded versions of elements of the base lookup table; 127. The arithmetic decoder of claim 126, wherein the second group of elements of the two-dimensional lookup table are scaled and rounded versions of elements of the base lookup table.
129. 129. The arithmetic decoder of claim 128, wherein the second group of elements of the two-dimensional lookup table are right-shifted versions of elements of the base lookup table.
130. Probability index (Qp 2 (p LPS i) determines whether to evaluate elements of the first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table; a first range of probability indices is associated with elements of said first group of elements; 130. An arithmetic decoder according to claim 128 or 129, wherein a second range of probability exponents is associated with elements of the second group of elements.
131. 131. The arithmetic decoder of claim 130, wherein a division residual (i % μ) of a division between the probability exponent (i) and a first size value and an interval size index determines which element of the base lookup table to use to obtain the element of a two-dimensional lookup table.
132. The arithmetic decoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function.
132. An arithmetic decoder according to any one of claims 126 to 131, configured to obtain elements of the two-dimensional lookup table (RangTabLPS) according to
133. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), the probability table describing a set of probability values and interval sizes for a given coding interval size; 127. The arithmetic decoder of claim 126, wherein elements of the two-dimensional lookup table for probability values not in the set of a plurality of probability values and / or coding interval sizes different from the given coding interval size are derived from the probability table using scaling.
134. The elements of the two-dimensional lookup table are using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values.
134. An arithmetic decoder according to claim 133 obtained by
135. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or 135. The arithmetic decoder of claim 134, wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
136. The arithmetic decoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Qr2(R) is a scaling factor that depends on R, 136. An arithmetic decoder according to claim 133, 134 or 135, wherein Scal(x,y) is a scaling function.
137. 134. An arithmetic decoder as claimed in claim 133, wherein an element of the two-dimensional lookup table is obtained using a first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether an element associated with a current probability value is included in the set of probability values, and using a second scaling of a result of the first scaling depending on the coding interval size (R).
138. a division residual ([i % μ]) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or The coding interval size is multiplied by the multiplicative scaling factor (Qr 2 138. An arithmetic decoder according to claim 137, further comprising:
139. The arithmetic decoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, 139. An arithmetic decoder according to claim 133, 137 or 138, wherein Scal(x,y) is a scaling function.
140. The arithmetic decoder receives the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k ]) to obtain the first and second subinterval width values (R*p k ), which calculation comprises: The entries are probability values for different value intervals of the value domain of said first and second state variable values, or said scaled and / or rounded versions thereof ([s k *a k ]) to obtain the first and second state variable values (s k ), or its scaled and / or rounded version ([s k 2 *a k 2 ]) to first and second probability values; and quantizing coding interval size information describing a size of a coding interval of said arithmetic coding before encoding symbols into quantization levels; determining a product between said first and second probability values and, on the one hand, said quantization levels; and 140. An arithmetic decoder as claimed in any one of claims 119 to 139, which does this by using the first subinterval width value and the second subinterval width value to obtain a combined subinterval width value.
141. 141. The arithmetic decoder of claim 140, wherein 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.
142. The arithmetic decoder receives the coding interval size information The quantization of configured to execute 、 and 141. The arithmetic decoder of claim 140, wherein: is a parameter.
143. The entries of the one-dimensional lookup table are the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 143. An arithmetic decoder according to any of claims 140 to 142, wherein the arithmetic decoder monotonically decreases with increasing
144. Different value intervals of the value domain of the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 144. An arithmetic decoder according to any of claims 140 to 143, wherein all of the first, second, third, and fourth inputs have the same size.
145. The entries of the one-dimensional lookup table are the first and second state variable values, or the scaled and / or rounded versions thereof ([s k *a k 145. The arithmetic decoder of claim 144, wherein the arithmetic decoder monotonically decreases with increasing
146. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24″; 520; 1622; 1722) having symbol values, comprising: The arithmetic decoder receives interval size information (p k , R*p k ; 432; 534; 620; 720; 820; 820; 1020; 1084; 1120; 1320; 1420; 1520; 1662; 1762) by arithmetic decoding of one or more symbol values into a plurality of state variable values (s i k ; 642, 644; 710; 810; 910; 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742), which represents statistics of multiple symbol values previously decoded with different adaptation time constants, The arithmetic decoder detects the plurality of state variable values (s i k ) the underlying combined state variable value (s k ) The arithmetic decoder detects the combined state variable value (s k ) or its scaled and / or rounded version ([s k 2 *a k 2 ]) using a lookup table to obtain the interval size information describing an interval size for the arithmetic decoding of one or more symbols to be decoded.
147. 147. An arithmetic decoder as claimed in claim 146, wherein the arithmetic decoder is configured to determine a weighted sum of state variable values to obtain the combined state variable value.
148. The arithmetic decoder detects the combined state variable value (s k ) to obtain the state variable values ( ) and associated weighting values ( ) is rounded to the rounded value ( 148. An arithmetic decoder according to claim 146 or claim 147 configured to determine the sum of
149. The arithmetic decoder comprises: s k 2 are the state variable values, N is the number of state variable values considered, [.] is the floor operator, d k i is a weighting value associated with the state variable value; According to this, the combined state variable value s k 149. An arithmetic decoder according to any one of claims 146 to 148, configured to determine:
150. the arithmetic decoder is configured to change the state variable values in a first direction when a decoded symbol has a first value and to change the state variable values in a second direction when a decoded symbol has a second value different from the first value; 150. An arithmetic decoder according to any one of claims 146 to 149, wherein the arithmetic decoder is configured to determine which entry of the look-up table is evaluated in dependence on the absolute value of the combined state variable value.
151. The arithmetic decoder outputs a probability value (p k ) to a value provided by the lookup table; The arithmetic decoder outputs the probability value (p k 151. An arithmetic decoder as claimed in claim 150, configured to set a first arithmetic operation to a value obtained by subtracting a value provided by the lookup table from a predetermined value.
152. The arithmetic decoder comprises: LUT2 is a lookup table containing probability values, [.] is the floor operator, s k is the binding variable value, a k is the weighting value associated with the combined state variable As a result, the joint probability value p k 152. An arithmetic decoder according to any one of claims 146 to 151 configured to determine:
153. The arithmetic decoder comprises: LUT2 is a lookup table containing probability values, [.] is the floor operator, s k is the binding variable value, a k is a weighting value associated with the combined state variable value As a result, the joint probability value p k 152. An arithmetic decoder according to any one of claims 146 to 151 configured to determine:
154. The arithmetic decoder receives the combined state variable value, or the scaled and / or rounded version thereof ([s k *a k ]) is converted to a subinterval width value (R*p k 153. An arithmetic decoder according to any one of claims 146 to 152, configured to map an entry into a coding interval (C) of a coding space (C) of a first arithmetic decoder (100) into a coding space (C) of a second arithmetic decoder (100) whose entries are addressed in dependence on the combined state variable value and in dependence on coding interval size information describing a size of a coding interval of the arithmetic decoding before decoding of a symbol.
155. The two-dimensional lookup table is The entries are probability values for different value intervals of the value domain of the combined state variable values, or scaled and / or rounded versions thereof ([s k *a k ]; ), and A second one-dimensional vector ( ) 155. An arithmetic decoder as claimed in claim 154, which can be expressed as a two-term product between:
156. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a base lookup table (BaseTabLPS); a first group of elements of the two-dimensional lookup table that are identical to or are rounded versions of elements of the base lookup table; 155. The arithmetic decoder of claim 154, wherein the second group of elements of the two-dimensional lookup table are scaled and rounded versions of elements of the base lookup table.
157. 157. The arithmetic decoder of claim 156, wherein the second group of elements of the two-dimensional lookup table are right-shifted versions of elements of the base lookup table.
158. Probability index (Qp 2 (p LPS i) determines whether to evaluate elements of the first group of elements of the two-dimensional lookup table or elements of a second group of elements of the two-dimensional lookup table; a first range of probability indices is associated with elements of said first group of elements; 158. An arithmetic decoder as claimed in claim 156 or 157, wherein a second range of probability exponents is associated with elements of the second group of elements.
159. 159. The arithmetic decoder of claim 158, wherein a division remainder (i % μ) of a division between the probability index (i) and a first size value and an interval size index determines which element of the base lookup table to use to obtain the element of the two-dimensional lookup table.
160. The arithmetic decoder comprises: RangeTabLPS[i][j]=Scal(BaseTabLPS[i%μ][j], [i / μ]) BaseTabLPS is a base lookup table of dimension μ×λ, i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, Scal(x,y) is the scaling function.
160. An arithmetic decoder according to any one of claims 154 to 159, configured to obtain elements of the two-dimensional lookup table (RangTabLPS) in accordance with
161. The elements of the two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), the probability table describing a set of probability values and interval sizes for a given coding interval size; 155. An arithmetic decoder as claimed in claim 154, wherein elements of the two-dimensional lookup table for probability values not in the set of a plurality of probability values and / or coding interval sizes different from the given coding interval size are derived from the probability table using scaling.
162. The elements of the two-dimensional lookup table are using a first scaling of selected elements of the probability table (probTabLPS[i%μ]) as a function of the coding interval size (R); using a second scaling of the result of the first scaling depending on whether an element associated with a current probability value is included in the set of probability values.
162. An arithmetic decoder as claimed in claim 161, obtained by
163. a division residual (i % μ) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or 163. The arithmetic decoder of claim 162, wherein the coding interval size determines a multiplicative scaling factor (Qr2(R)) of the first scaling.
164. The arithmetic decoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Qr2(R) is a scaling factor that depends on R, 164. An arithmetic decoder according to claim 161, 162 or 163, wherein Scal(x,y) is a scaling function.
165. 162. An arithmetic decoder as claimed in claim 161, wherein an element of the two-dimensional lookup table is obtained using a first scaling of a selected element of the probability table (probTabLPS[i % μ]) depending on whether an element associated with a current probability value is included in the set of probability values, and using a second scaling of a result of the first scaling depending on the coding interval size (R).
166. a division residual ([i % μ]) of the division between the probability exponent and the first size value determines which elements of the probability table are scaled with the first scaling; and / or The integer division result ([i / μ]) of the division between the probability index (i) and the first size value is the scaling factor (2 -[i/μ] ) to determine and / or The coding interval size is multiplied by the multiplicative scaling factor (Qr 2 166. An arithmetic decoder according to claim 165, further comprising:
167. The arithmetic decoder selects elements of the two-dimensional lookup table. configured to obtain i is the table index associated with the probability information, j is the table index associated with the interval size information, % is the division remainder operation, / is the division operation, probTabLPS[ ] is the probability table, μ is the number of elements in the probability table, R is the interval size, Q 2 (R) is a scaling factor that depends on R, 167. An arithmetic decoder according to claim 161, 165 or 166, wherein Scal(x,y) is a scaling function.
168. The arithmetic decoder comprises: The combined state variable value, or the scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value (R*p k ), which calculation comprises: The entries are probability values for different value intervals of the value domain of said combined state variable values, or said scaled and / or rounded versions thereof ([s k *a k ]; ) to obtain the combined state variable value (s k ), or its scaled and / or rounded version ([s k *a k ]; ) to joint probability values; and This is done by quantizing coding interval size information describing a size of a coding interval of the arithmetic coding before encoding symbols into quantization levels, the arithmetic decoder further comprising:
168. An arithmetic decoder according to any one of claims 146 to 167, configured to determine a product between the joint probability values and the quantization levels.
169. 169. The arithmetic decoder of claim 168, wherein 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.
170. The arithmetic decoder receives the coding interval size information The quantization of configured to execute 、 and 169. The arithmetic decoder of claim 168, wherein: is a parameter.
171. The entries of the one-dimensional lookup table are the combined state variable values, or the scaled and / or rounded versions thereof ([s k* a k 171. An arithmetic decoder according to any of claims 168 to 170, wherein the decoder monotonically decreases with increasing
172. The different value intervals of the value domain of the combined state variable values, or the scaled and / or rounded versions thereof ([s k* a k 172. An arithmetic decoder according to any of claims 168 to 171, wherein all of the first, second, third, and fourth inputs have the same size.
173. The entries of the one-dimensional lookup table are the combined state variable values, or the scaled and / or rounded versions thereof ([s k* a k 173. The arithmetic decoder of claim 172, wherein the arithmetic decoder monotonically decreases with increasing
174. 174. An arithmetic decoder according to any one of claims 146 to 173, wherein the lookup table defines an exponential decay.
175. The arithmetic decoder comprises: z is a predetermined offset value, is one or more weighting values, is one or more weighting values, A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and is a given parameter In accordance with the above Multiple Mutable State Values 175. An arithmetic decoder according to any one of claims 146 to 174, configured to update
176. By table lookup or calculation 176. An arithmetic decoder according to claim 175 configured to derive:
177. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24″; 520; 1622; 1722) having symbol values, comprising: The arithmetic decoder detects one or more state variable values (s 1 k , s 2 k 1010a, 1010b; 1082a, 1082b; 1110; 1210; 1310; 1410; 1510; 1632, 1642; 1732, 1742), which represents statistics of a plurality of previously encoded symbol values; and The arithmetic decoder detects the one or more state variable values (s i k ) based on the arithmetic decoding interval size information (p k , R*p k ), which represents statistics of a plurality of previously decoded symbol values; The arithmetic decoder uses a look-up table (A) to determine a first state variable value (s k 1 )
178. The arithmetic decoder uses the look-up table (A) to determine a second state variable value (s k 2 178. An arithmetic decoder according to claim 177 configured to update
179. 179. An arithmetic decoder according to claim 177 or claim 178, wherein the arithmetic decoder is configured to update the first state variable values and the second state variable values using different adaptive time constants.
180. An arithmetic decoder as claimed in claim 177 or claim 178 or claim 179, wherein the arithmetic decoder is configured to selectively increment or decrement a previous state variable value by a value determined using the lookup table depending on whether a decoded symbol has a first value or a second value different from the first value.
181. the arithmetic decoder is configured to increase a previous state variable value by a relatively larger value when the previous state variable value is negative compared to when the previous state variable value is positive when a decoded symbol has a first value; 181. An arithmetic decoder according to any one of claims 177 to 180, wherein the arithmetic decoder is configured to decrease a previous state variable value by a relatively larger value when the previous state variable value is positive compared to when the previous state variable value is negative when a decoded symbol takes a second value different from the first value.
182. The arithmetic decoder calculates a first value for a symbol to be decoded based on a predetermined offset value (z) and a previously calculated first state variable value ( ), or its scaled and / or rounded version ( ) to determine an index of an entry in the lookup table to be evaluated when updating the first state variable value; The arithmetic decoder generates a predetermined offset value (z) and an inverse version of a previously calculated first state variable value ( ), or its scaled and / or rounded version ( 182. An arithmetic decoder according to any one of claims 177 to 181, configured to determine an index of an entry of the look-up table to be evaluated when updating the first state variable value in dependence on the sum of
183. The arithmetic decoder calculates a first value for a symbol to be decoded based on a predetermined offset value (z) and a previously calculated second state variable value ( ), or its scaled and / or rounded version ( ) to determine an index of an entry in the lookup table to be evaluated when updating the second state variable value; The arithmetic decoder generates a predetermined offset value (z) and an inverse version of a previously calculated second state variable value ( ), or its scaled and / or rounded version ( 183. An arithmetic decoder according to any one of claims 177 to 182, configured to determine an index of an entry of the look-up table to be evaluated when updating the second state variable value in dependence on the sum of
184. The arithmetic decoder uses a first scaling value (m k 1 ) to obtain the previously calculated first state variable value (s k 1 ) and The arithmetic decoder uses a second scaling value (m k 2 ) to obtain the previously calculated second state variable value (s k 2 ) and 184. An arithmetic decoder according to any one of claims 177 to 183, wherein the first scaling value is different from the second scaling value.
185. the arithmetic decoder is configured to scale values returned by evaluation of the lookup table using a first scaling value when updating the first state variable value; the arithmetic decoder is configured to scale values returned by evaluation of the lookup table using a second scaling value when updating the second state variable value; 185. An arithmetic decoder according to any one of claims 177 to 184, wherein the first scaling value is different from the second scaling value.
186. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 186. An arithmetic decoder according to any one of claims 177 to 185, configured to determine:
187. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 186. An arithmetic decoder according to any one of claims 177 to 185, configured to determine:
188. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 186. An arithmetic decoder according to any one of claims 177 to 185, configured to determine:
189. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 186. An arithmetic decoder according to any one of claims 177 to 185, configured to determine:
190. 190. An arithmetic decoder according to any one of claims 186 to 189, wherein the entries of A decrease monotonically with increasing lookup table index.
191. A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and 191. An arithmetic decoder according to any one of claims 186 to 190, wherein: is a predetermined parameter.
192. 192. An arithmetic decoder according to any one of claims 177 to 191, wherein a last entry of the lookup table is equal to zero.
193. 193. An arithmetic decoder according to any one of claims 177 to 192, wherein the arithmetic decoder is configured to apply a clipping operation to the updated state variable values to keep the updated clipped state variable values within a predetermined range of values.
194. The arithmetic decoder comprises: The updated state variable values are , configured to apply a clipping operation according to teeth, is the maximum allowable value of teeth, 200. An arithmetic decoder as claimed in claim 193, wherein:
195. 195. An arithmetic decoder according to any one of claims 177 to 194, wherein the arithmetic decoder is configured to apply different scaling values to different contexts.
196. 196. An arithmetic decoder according to any one of claims 177 to 195, wherein the arithmetic decoder is configured to obtain the interval size information as defined in one of claims 119 to 155.
197. An arithmetic decoder (50; 500; 1620; 1720) for decoding a plurality of symbols (24″; 520; 1622; 1722) having symbol values, comprising: The arithmetic decoder generates a single state variable value (s k ) configured to determine The arithmetic decoder receives the combined state variable value, or the scaled and / or rounded version thereof ([s k *a k ]) to the subinterval width value ( ) for arithmetic decoding of the symbol values to be decoded, the calculation comprising: The entries are probability values for different value intervals of the value domain of said combined state variable values, or said scaled and / or rounded versions thereof ([s k *a k ]; ) containing a one-dimensional lookup table ( ) to obtain the one state variable value (s k ), or its scaled and / or rounded version ([s k *a k ]; ) to joint probability values; and Quantization level ( ), by quantizing coding interval size information describing a size of a coding interval of the arithmetic coding prior to the arithmetic decoding of the symbol values coded onto a coding interval size information (C1, C2) of the arithmetic coding, the arithmetic decoder further comprising: configured to determine a product between the probability value and the quantization level; the arithmetic decoder is configured to perform an update of state variable values depending on the symbol being decoded. Arithmetic decoder.
198. The arithmetic decoder receives a number of state variable values (s i k ) is calculated by dividing the combined state variable value (s k 200. The arithmetic decoder of claim 197 configured to derive as a function of time constants, the function representing statistics of the plurality of symbol values previously decoded with different adaptive time constants.
199. 200. An arithmetic decoder as claimed in claim 198, wherein the arithmetic decoder is configured to determine a weighted sum of state variable values to obtain the combined state variable value.
200. The arithmetic decoder detects the combined state variable value (s k ) to obtain the state variable values ( ) and associated weighting values ( ) is rounded to the rounded value ( 200. An arithmetic decoder according to claim 198 or 199, configured to determine the sum of
201. The arithmetic decoder comprises: s k 2 are the state variable values, N is the number of state variable values considered, [.] is the floor operator, d k i is a weighting value associated with the state variable value; According to this, the combined state variable value s k 201. An arithmetic decoder according to any one of claims 198 to 200, configured to determine:
202. The arithmetic decoder comprises: z is a predetermined offset value, is one or more weighting values, is one or more weighting values, A is Or, deviating from it only for one or more extreme values of the argument by zeroing out or decreasing the magnitude, the updated avoids leaving a given range of values, 、 、 , and is a given parameter In accordance with the above, when updating the state variable value, Multiple State Variable Values 202. An arithmetic decoder according to any one of claims 198 to 201, configured to update
203. By table lookup or calculation 203. An arithmetic decoder according to claim 202 configured to derive:
204. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values 204. An arithmetic decoder according to any one of claims 197 to 203, configured to determine:
205. The arithmetic decoder comprises: A is a lookup table, z is a predetermined offset value, is one or more weighting values, is one or more weighting values Accordingly, one or more updated state variable values The arithmetic decoder according to any one of claims 197 to 201, configured to determine.
206. The arithmetic decoder, A is a look-up table, z is a predetermined offset value, are one or more weighting values, are one or more weighting values Accordingly, one or more updated state variable values The arithmetic decoder according to any one of claims 197 to 201, configured to determine.
207. The arithmetic decoder according to any one of claims 197 to 206, configured to perform the quantization of the coding interval size information by applying a logical right shift to the coding interval size information.
208. The arithmetic decoder, the coding interval size information of the quantization configured to be performed by 、 and are parameters, the arithmetic decoder according to any one of claims 197 to 206.
209. The entries of the one-dimensional lookup table are the one state variable value or the scaled and / or rounded version thereof ([s k *a k 209. An arithmetic decoder according to any of claims 197 to 208, wherein the arithmetic decoder monotonically decreases with increasing
210. Different value intervals of the value domain of the one state variable value, or the scaled and / or rounded version thereof ([s k *a k 210. An arithmetic decoder as claimed in any of claims 197 to 209, wherein all of the first, second, third, and fourth inputs are of the same size.
211. The entries of the one-dimensional lookup table are the one state variable value or the scaled and / or rounded version thereof ([s k *a k 211. The arithmetic decoder of claim 210, wherein the arithmetic decoder monotonically decreases with increasing
212. A video encoder (10), The video encoder is configured to encode a plurality of video frames (12), The video encoder is an arithmetic encoder (34; 400) for providing a binary sequence (420) encoded based on a sequence of binary values (410) representing video content according to any one of claims 1 to 79 or claims 104 to 118 or claims 80 to 91. A video encoder comprising.
213. A video decoder (20; 1600; 1700), The video decoder is configured to composite a plurality of video frames (12'), The video decoder is an arithmetic decoder (50; 500; 1620; 1720) for providing a binary sequence (24'', 520; 1622; 1722) decoded based on the encoded representation (14; 510; 1610; 1710) of the binary sequence according to any one of claims 119 to 196 or claims 197 to 211 or claims 92 to 103. A video decoder comprising.
214. A method for encoding a plurality of symbols having symbol values, The method further comprises the step of: k , R*p k ) into a plurality of state variable values (s i k ) to be coded based on the adaptive time constants, representing statistics of a plurality of previously coded symbol values; The method includes using a lookup table (LUT1) to find a first state variable value (s k 1 ), or its scaled and / or rounded version ([s k 1 *a k 1 ]), Using the lookup table (LUT1), a second state variable value (s k 2 ), or its scaled and / or rounded version ([s k 2 *a k 2 ]) including A method of obtaining the interval size information for explaining the interval size for the arithmetic coding of one or more symbols to be encoded.
215. 1. A method for encoding a plurality of symbols having symbol values, comprising: The method further comprises the step of: k , R*p k ) into a plurality of state variable values (s i k ) that represents statistics of a number of symbol values (e.g., sequences of binary values 0 and 1) previously encoded with different adaptive time constants; The method further comprises: i k ) the underlying combined state variable value (s k ) The method further comprises: k ) or its scaled and / or rounded version ([s k 2 *a k 2 ]) using a lookup table to obtain the interval size information describing an interval size for the arithmetic coding of one or more symbols to be encoded.
216. 1. A method for encoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: 1 k , s 2 k ), which represents statistics of a number of previously encoded symbol values; and The method further comprises: i k ) based on the interval size information (p k , R*p k ), which represents statistics of a plurality of previously encoded symbol values; The method includes: determining, in dependence on the symbol to be encoded, a first state variable value (s k 1 ) updating the
217. 1. A method for decoding a plurality of symbols having symbol values, comprising: The method further comprises the step of: k , R*p k ) to obtain a plurality of state variable values (s i k ) to be decoded based on the adaptive time constant, representing statistics of a plurality of previously decoded symbol values with different adaptive time constants; The method includes using a lookup table (LUT1) to find a first state variable value (s k 1 ), or its scaled and / or rounded version ([s k 1 *a k 1 ]), Using the lookup table (LUT1), a second state variable value (s k 2 ), or its scaled and / or rounded version ([s k 2 *a k 2 ]) Including, A method for obtaining interval size information describing an interval size for arithmetic decoding of one or more symbols to be decoded.
218. 1. A method for decoding a plurality of symbols having symbol values, comprising: The method further comprises the step of: k , R*p k ) to obtain a plurality of state variable values (s i k ) to be decoded based on the adaptive time constant, which represents statistics of multiple symbol values previously decoded with different adaptive time constants; The method further comprises: i k ) the underlying combined state variable value (s k ) The method further comprises: k ) or its scaled and / or rounded version ([s k 2 *a k 2 ]) using a lookup table to obtain the interval size information describing an interval size for the arithmetic decoding of one or more symbols to be decoded.
219. 1. A method for decoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: 1 k , s 2 k ), which represents statistics of a number of previously decoded symbol values; and The method further comprises: i k ) based on the arithmetic decoding interval size information (p k , R*p k ), which represents statistics of a plurality of previously decoded symbol values; The method includes: determining, depending on the symbol to be decoded, a first state variable value (s k 1 ) updating the
220. A method performed by an encoder and decoder according to claim 104.
221. 200. A method performed by the encoder and decoder of claim 197.
222. 222. Computer program for performing the method of any one of claims 214 to 221 when the computer program runs on a computer.
223. 1. A method for encoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: i k ) the interval size value (R LPS ), which represents statistics of a number of previously encoded symbol values; The method uses a base lookup table (BaseTabLPS) to find the interval size value (R LPS ) determining The method further comprises: scaling the interval size value (R ) such that, if a probability index (i) obtained based on the one or more state variable values is within a first range, the determined interval size value is the same as an element of the base lookup table or is a rounded version of an element of the base lookup table, and, if the probability index is within a second range, scaling and rounding the element of the base lookup table is used to obtain the determined interval size value. LPS ) determining The method further comprises: LPS ) performing the arithmetic coding of one or more symbols.
224. 1. A method for encoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: i k ) the interval size value (R LPS ), which represents statistics of multiple previously encoded symbol values. The method further comprises: determining, based on a probability value derived from the one or more state variable values and based on a coding interval size (R), the interval size value (R) using a probability table (Prob TabLPS). LPS ) determining the probability table describing a set of probability values and interval sizes for a given coding interval size; The method further comprises: if the current probability value is not in a set of a plurality of probability values and / or if the current coding interval size (R) is different from the given coding interval size, the interval size value (R LPS ) , and The method further comprises: LPS ) performing the arithmetic coding of one or more symbols.
225. 1. A method for decoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: i k ) based on the arithmetic decoding interval size value (R LPS ), which represents statistics of a number of previously decoded symbol values; The method uses a base lookup table (BaseTabLPS) to find the interval size value (R LPS ) determining The method further comprises: scaling the interval size value (R ) such that, if a probability index (i) obtained based on the one or more state variable values is within a first range, the determined interval size value is the same as an element of the base lookup table or is a rounded version of an element of the base lookup table, and, if the probability index is within a second range, scaling and rounding the element of the base lookup table is used to obtain the determined interval size value. LPS ) determining The method further comprises: LPS ) to perform the arithmetic decoding of one or more symbols.
226. 1. A method for decoding a plurality of symbols having symbol values, comprising: The method further comprises the steps of: i k ) based on the interval size value (R LPS ), which represents statistics of a number of previously decoded symbol values; The method further comprises: determining, based on a probability value derived from the one or more state variable values and based on a coding interval size (R), the interval size value (R) using a probability table (Prob TabLPS). LPS ) determining the probability table describing a set of probability values and interval sizes for a given coding interval size; The method further comprises: if the current probability value is not in a set of a plurality of probability values and / or if the current coding interval size (R) is different from the given coding interval size, the interval size value (R LPS ) , and The method further comprises: LPS ) to perform the arithmetic decoding of one or more symbols.
227. 227. A computer program for performing the method of any one of claims 223 to 226, when said computer program is run on a computer.
Citation Information
Patent Citations
Mapping states in a binary arithmetic coder for video coding
JP2014534736A
Advanced arithmetic coder
WO2016196307A1