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

Figure CN121036775A_ABST
Abstract
Description
[0001] This application is a divisional application of PCT patent application No. 201980058433.3, filed with the International Bureau on July 5, 2019, and entering the Chinese national phase on March 5, 2021, entitled "Arithmetic Encoder, Arithmetic Decoder, Video Encoder, Video Decoder, Encoding Method, Decoding Method and Computer Program". Technical Field
[0002] An arithmetic encoder was created according to an embodiment of the present invention.
[0003] An arithmetic decoder was created according to another embodiment of the invention.
[0004] A video encoder was created according to another embodiment of the present invention.
[0005] A video decoder was created according to another embodiment of the present invention.
[0006] According to another embodiment of the present invention, a method for encoding a plurality of symbols and a method for decoding a plurality of symbols are created.
[0007] A corresponding computer program was created according to another embodiment of the present invention.
[0008] Generally, embodiments of the present invention use finite state machines to create context model update methods. Background Technology
[0009] Arithmetic coding and decoding have proven to be valuable tools for encoding and decoding audio and video content, as well as for encoding other types of information, such as images, neural network coefficients, etc. Embodiments of this invention can be used in all of these applications. For example, coding efficiency can be improved by leveraging the known probabilities of binary values (e.g., symbols) in binary sequences representing video or audio content (or other types of content). Specifically, arithmetic coding can efficiently handle varying probabilities of "0" and "1" and can be fine-tuned to accommodate changes in these probabilities.
[0010] However, in order for arithmetic encoding and decoding to achieve optimal encoding efficiency, it is important to have good information about the probabilities of "0" and "1" that accurately reflects their actual frequency of occurrence.
[0011] To accommodate the probabilities of “0” and “1” (or more generally, the probabilities of the symbols to be encoded), a concept is often used to adjust the boundaries of intervals within the total (current) range of values to achieve interval subdivision (e.g., such that the entire range of values is subdivided into intervals associated with different binary values or groups of binary values).
[0012] In other words, information about the probabilities of different symbols (e.g., "0" and "1") is used to derive interval size information (or equivalently, interval size values), which describes the width of the interval associated with the symbol (wherein, the total interval width may, for example, depend on the encoding or decoding process over time due to interval renormalization).
[0013] Therefore, there is a need for concepts that provide a good balance between computational efficiency and reliability in determining source statistics (e.g., state variable values) and / or range values (e.g., interval size values) for interval subdivision (e.g., subdivision of the total coding interval). Summary of the Invention
[0014] An arithmetic encoder for encoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to be based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The multiple state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic encoder is configured to use a lookup table (LUT1) to map the first state variable values (s k 1) or its scaled and / or rounded version And a lookup table (LUT1) is used to map the values of the second state variable (s). k 2) or its scaled and / or rounded version In order to obtain the interval size information (e.g., p) which describes the interval size for the arithmetic encoding of one or more symbols to be encoded. k or R*p k ).
[0015] This embodiment of the invention is based on the idea that interval size information can be obtained with particularly good reliability if a 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., sign probability) at different time scales, interval size information can be obtained efficiently (because only one lookup table is needed) but with good reliability (because statistics at different time scales are considered when determining interval size information). The mapping of state variable values using a lookup table can be considered an important and direct step in deriving interval size information based on state variable values. Optionally, one or more additional mappings and / or combinations of mapping results can follow a lookup table-based mapping of the first and second state variable values when deriving interval size information. Optionally, a probability value can be obtained as an intermediate quantity using a lookup table-based mapping of the first and second state variable values. Furthermore, different concepts for deriving interval size information from the results of a lookup table-based mapping of the first and second state variable values are possible.
[0016] In summary, this embodiment of the invention provides for deriving interval size information based on first and second state variable values using (at least) two lookup table-based mappings. Therefore, state variable values associated with different adaptation time constants can be mapped separately, but using the same mapping rule (defined by the lookup table). This makes the resource requirements for determining interval size information relatively small, yet still allows for consideration (e.g., weighted consideration) of statistics (or statistical information about) the symbols of multiple prior processes (e.g., encoding or decoding) obtained through different adaptation time constants or statistically calculated time constants.
[0017] In a preferred embodiment, the arithmetic encoder is configured to use a lookup table to retrieve the value of a first state variable or its scaled and / or rounded version. Mapped to the first probability value (p) k 1 On, and wherein the arithmetic encoder is configured to use a lookup table to convert the value of the second state variable or its scaled and / or rounded version. Mapped to the second probability value (p) k 2 The arithmetic encoder is configured to use a first probability value and a second probability value to obtain a combined probability value (pk) (e.g., using a weighted sum or a weighted average).
[0018] Using this concept, combined probability values describing symbol probabilities (e.g., the probability of symbol "1" or symbol "0") can be readily derived based on first and second state variable values. For example, a first state variable value following a symbol of prior processing with first flexibility (e.g., encoding or decoding) can be mapped to a first probability value, and a second state variable value following a symbol of prior processing with second flexibility (e.g., encoding or decoding) can be efficiently mapped to a second probability value. Thus, trends in symbols of prior processing occurring at different time scales can be considered, and combined probability values can still be derived in a highly efficient manner. The first and second state variable values allow for tracking trends in symbols of prior processing with different adaptation time constants, and the above concept can be used to map state variable values to "partial" probability values (first and second probability values) that contribute to the combined probability values in a highly resource-efficient manner.
[0019] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value to a first direction (e.g., become more positive) if the symbol to be encoded takes a first value (e.g., "1"), and to change the state variable value to a second direction (e.g., become more negative) if the symbol to be encoded takes a second value different from the first value (e.g., "0") (e.g., make the state variable value both positive and negative), wherein the arithmetic encoder is configured to base its state variable value on the absolute value of each state variable (if s k i >0, then s k i Otherwise it is -s k i (For example, depending on the scaled and rounded version of the absolute value of the state variable) Determine the entries of the lookup table to be evaluated.
[0020] The efficiency of the concept can be further improved by using state variable values that can take both negative and positive values (e.g., depending on the history of previously processed symbols, and, for example, in a symmetric manner for opposite previously processed symbols), and by selecting entries for the lookup table based on the absolute values of the individual state variable values. For example, it is no longer necessary to have dedicated entries for the lookup table for every possible value (or quantized value) of the state variable values. Instead, entries for the lookup table can be used both for positive state variable values and for corresponding negative state variable values (i.e., for “opposite” state variable values with equal absolute values but opposite signs). Thus, the number of entries for the lookup table can be kept small, and the “symmetry” of the determined interval size information regarding the opposite previously processed symbols can be utilized.
[0021] In a preferred embodiment, the arithmetic encoder is configured to, if the first state variable value takes a first sign (e.g., a positive sign), then assign a first probability value (p) to the first probability value. k 1) Set to a value provided by the lookup table (e.g., for ), and wherein the arithmetic encoder is configured to, if the value of the first state variable takes a second sign (e.g., a negative sign), then set the first probability value (p) to... k 1) Set to the value obtained by subtracting the value provided by the lookup table from a predetermined value (e.g., 1). ).
[0022] Using such a mechanism, the number of entries in the lookup table can be kept small (e.g., because entries are selected only based on the absolute values of the individual state variables), while still obtaining "complementary" probability values for the opposite signs of the individual state variable values. Therefore, a high degree of resource efficiency and low computational complexity is achieved for determining probability values.
[0023] In a preferred embodiment, the arithmetic encoder is configured to determine two or more probability values p according to the following formula. k i :
[0024]
[0025] Wherein, LUT1 is a lookup table containing probability values; where, It is the round-down operator; where s k i It is the value of the i-th state variable; and among them, a k i It is a weighted value associated with the value of the i-th state variable (e.g., a weighted value that makes the range of numbers for the i-th state variable applicable to the number of entries in the lookup table).
[0026] It has been found that such calculations are computationally efficient and keep resource requirements quite small.
[0027] In a preferred embodiment, the arithmetic encoder is configured to determine two or more probability values p according to the following formula. k i :
[0028]
[0029] Wherein, LUT1 is a lookup table containing probability values; where, It is the round-down operator; where s k i It is the value of the i-th state variable; and among them, a k iIt is a weighted value associated with the value of the i-th state variable (e.g., a weighted value that makes the range of numbers for the i-th state variable applicable to the number of entries in the lookup table).
[0030] It has been found that, depending on the actual numerical representation, such computation is advantageous in certain situations. Specifically, the rounding down operator is applied to the same operands, regardless of the sign of the state variable value. Specifically, it is not necessary to remove the sign of the operands in the rounding down operator, which saves some computational complexity. Conversely, negation is applied only to the result of the rounding down operator, which is usually an integer value. Therefore, the complexity of applying the negation operator is particularly low. In other words, the concepts described in this paper also bring particularly low complexity.
[0031] In a preferred embodiment, the arithmetic encoder is configured to base a plurality of probability values p on the following formula. k i Obtain the combination probability value p k :
[0032]
[0033] Where N is the number of probability values considered (and can be equal to the number of state variable values considered); and where b k i It is a weighted value (e.g., a weighting factor that controls the influence of the values of individual state variables on the combined probability value) (where b) k i Preferably, it is the integer value performance of von 2, and wherein two different b k i The ratio between them is preferably an integer value of 2 (performance).
[0034] By applying different weights to probability values obtained based on different state variable values, we can consider the different effects of short-term and long-term statistics on combined probability values and obtain particularly meaningful combined probability values.
[0035] In a preferred embodiment, the arithmetic encoder is configured to use a two-dimensional lookup table to encode the value of a first state variable or its scaled and / or rounded version. Mapped to the width value of the first sub-interval (R*p) k 1) The entries of the two-dimensional lookup table are addressed (e.g., to determine the coordinates of the second lookup table entries) based on the value of a first state variable (e.g., using probability index i to determine the coordinates of the first lookup table entry) and based on encoding interval size information (e.g., R, or index j derived from R) describing the size of the encoding interval prior to the encoding of the symbol, wherein the arithmetic encoder is configured to use the two-dimensional lookup table to encode the value of the second state variable or its scaled and / or rounded version. Mapped to the width value of the second sub-interval (R*p) k 2 On the ), the entries of the two-dimensional lookup table depend on the value of a second state variable (e.g., determining the coordinates of the first lookup table entry) and on encoding interval size information (e.g., R) describing the size of the encoding interval of the arithmetic encoding prior to the encoding of the symbol to be addressed (e.g., determining the coordinates of the second lookup table entry), wherein the arithmetic encoder is configured to use the first sub-interval width value and the second sub-interval width value to obtain a combined sub-interval width value (e.g., using a weighted sum or using a weighted average).
[0036] By using a two-dimensional lookup table that reflects the multiplication of multiple different probability values with multiple different interval sizes, computational complexity can be reduced because multiplication operations can be eliminated. For example, one index identifying an entry in the two-dimensional lookup table is defined by the individual state variable values (or their scaled and / or rounded versions), and the second index is determined by the current (total) encoding interval size. Therefore, based on the first and second indices, elements (entries) of the two-dimensional lookup table can be uniquely identified, and the identified elements typically reflect the product of the probability value associated with each state variable value and the encoding interval size associated with the second table index. Thus, by consuming some memory (which in some cases can be read-only memory) for the two-dimensional lookup table, multiplication operations can be eliminated, which can be advantageous in terms of computational resources and energy consumption.
[0037] In a preferred embodiment of the arithmetic encoder, the two-dimensional lookup table can be represented as a binary product of the following two: a first one-dimensional vector (forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include the values of a first state variable and the values of a second state variable or their scaled and / or rounded versions. The probability values of different value intervals in the range; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0038] By using such a three-dimensional lookup table, the multiplication operation between the probability values of different pairs and the size of the encoding interval can be reflected in the table. Therefore, by selecting appropriate elements of the two-dimensional lookup table, the multiplication operation can be omitted. Furthermore, the entries of the two-dimensional lookup table can be obtained in a very simple way using this method.
[0039] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on the base lookup table (Base TabLPS), wherein the first set of elements (or blocks; e.g., "upper half") of the two-dimensional lookup table are the same as or rounded versions of the elements of the base lookup table, and wherein the second set of elements (or blocks; e.g., "lower half") of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0040] By using this method, approximate index increments or decrements of the elements of a two-dimensional lookup table can be obtained. For example, by defining the elements of a two-dimensional lookup table such that the second set of elements is essentially (e.g., except for deviations caused by rounding) a scaled version of the elements of the first set of elements, a highly consistent two-dimensional lookup table can be obtained. Furthermore, it should be noted that the elements of a two-dimensional lookup table can be readily obtained using this method.
[0041] In a preferred embodiment of the arithmetic encoder, the second set of elements of the two-dimensional lookup table is a right-shifted version of the elements of the basic lookup table.
[0042] By using this method, elements of a two-dimensional lookup table can be obtained in a particularly efficient manner, because right shift operations can be performed very easily. Moreover, the right shift operation causes appropriate scaling and can also perform rounding operations in a very efficient manner.
[0043] In a preferred embodiment of this arithmetic encoder, the probability index (Qp2(p)) is used. LPS (i)) Determine whether to evaluate the elements of the first set of elements in a two-dimensional lookup table or the elements of the second set of elements in a two-dimensional lookup table, where the probability index (e.g., by quantizing probability values (e.g., p)) LPS The first range (e.g., between 0 and μ-1) obtained is associated with the elements of the first set of elements, and the probability index (e.g., by using the quantization function Qp2(.) to quantize the probability value (e.g., p) LPS The second range (e.g., greater than or equal to μ) obtained is associated with the elements of the second group of elements.
[0044] By using such a concept, it is possible to distinguish whether an element from the first set of elements or the second set of elements should be used, depending on a probability index, which can be based, for example, on the values of the individual state variables. For example, the probability index (e.g., defined by the probability of the least likely sign or by integer index values) can be derived, for example, using a mapping based on the values of the individual state variables. For example, a first probability value obtained using a mapping of the first state variable values or a second probability value obtained using a mapping of the second state variable values can be used to determine which element of the two-dimensional lookup table should be evaluated (and specifically, whether it is an element from the first set of elements or an element from the second set of elements of the two-dimensional lookup table that is evaluated).
[0045] Furthermore, using this concept, the elements of a two-dimensional lookup table can be determined based on the basic lookup table "in operation," the number of elements in the basic lookup table being less than the number of table elements, which can be addressed using probabilistic indexes and encoding interval size indexes.
[0046] 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., μ; where the size value describes, for example, the expansion of the basic lookup table in the first direction) and the interval size index (e.g., which can be obtained based on the interval size information R, for example using the quantization operation Qr2(.)(e.g., j);) determine which element of the basic lookup table is used to obtain the element of the two-dimensional lookup table.
[0047] By using this concept, appropriate elements of the base lookup table can be selected, even though the expansion of the base lookup table in the first direction is less than the number of possible probability index values. By evaluating the division residual of the division between the probability index and a first size value (which can describe the expansion of the base lookup table in the first direction), elements of the base lookup table can be reused for two or more different probability index values (e.g., differing from the first size value). Therefore, for example, with different scaling, entries of the base lookup table can be used twice for two probability index values differing from the first size value. Thus, a two-dimensional lookup table can be used to generally describe the evolution of probability index values, where the evolution within a second range of probability index values is a scaled version (e.g., subject to rounding) compared to the evolution within a first range.
[0048] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements of the two-dimensional lookup table (RangTabLPS) according to the following formula:
[0049]
[0050] Where BaseTabLPS is a basic lookup table of size μ×λ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., describing the size of the current encoding interval); where % is the division residual operation; where / is the division operation; where Scal(x, y) is the scaling function (e.g., defined as Scal...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0051] By using such a method, interval size information, which can be defined by the result of a scaling function or scaling operation, can be obtained, particularly in a memory-efficient manner. For example, the "BaseTabLPS" lookup table can be particularly small because its first size μ is typically smaller than the range of values of the table index i associated with the probability information, and because its second size λ can be equal to the number of possible different interval sizes described by the interval size information. Furthermore, the scaling function can be implemented in a particularly efficient manner because the number of different scaling factors defined by the down-rounding operation of the quotient of i and μ is relatively small. For example, if the range of division between i and μ is between 0 and a maximum value less than 2, only two different scaling operations can be performed. For example, only two, three, or four different scaling options (depending on the quotient between i and μ) can exist, and these scaling options can be implemented efficiently using multiplication with only a few predetermined values or even simply using shift operations.
[0052] In a preferred embodiment of the arithmetic encoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) encoding interval size, and wherein scaling is used to derive elements of a two-dimensional lookup table from the probability table for probability values not in the set of multiple probability values and / or for encoding interval sizes different from the given encoding interval size.
[0053] Using this method, it is possible to take advantage of the fact that different interval sizes are often correlated with each other through scaling, depending on the difference between associated probability values and / or depending on the difference between associated coding interval sizes. In other words, if the two-dimensional lookup table does not include an element that fits the currently considered probability value and / or the currently considered coding interval size, an appropriate interval size can still be obtained, wherein another element of the two-dimensional lookup table is scaled accordingly (e.g., depending on the currently considered probability value and / or depending on the currently considered coding interval size).
[0054] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table are obtained by a first scaling (multiplication) of selected elements (probTabLPS[i%μ]) of the probability table, which depends on the size (R) of the encoding interval, and a second scaling, which depends on the result of the first scaling, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table).
[0055] Therefore, elements of a two-dimensional lookup table can be obtained "in operation" using appropriate entries of the probability table and with appropriate scaling, where the evaluated "probability table" is typically significantly smaller than the two-dimensional lookup table. In other words, appropriate elements of the probability table are selected and scaled based on the two indices that address the elements of the two-dimensional lookup table. However, in many cases, such a concept offers an improved balance between memory requirements and computational complexity.
[0056] In a preferred embodiment of the arithmetic encoder, the division residual (i%μ) of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or the integer division result of the division between the probability index (i) and the first size value. Determine the scaling factor used in the second scaling. The multiplicative scaling factor (Qr2(R)) for the first scaling is determined by the size of the encoding interval and / or the encoding interval size.
[0057] Using this concept, a small probability table can be used, representing only a (relatively small) portion of a two-dimensional raster that contains both probability indices and encoding interval size indices, thus saving memory space. The appropriate interval size information can then be obtained through the aforementioned selection of elements of the probability table and, moreover, through the aforementioned secondary scaling of the selected elements of the probability table.
[0058] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0059]
[0060] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation; probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the value of I is usually greater than μ); R is the interval size (or the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0061] By using a concept for obtaining appropriate elements of a two-dimensional lookup table, a very good balance can be achieved between memory requirements and computational complexity. These appropriate elements can represent interval size information or be equal to it. The table "probTabLPS" can, for example, be a one-dimensional table, where the number of elements can be less than the number of different possible values for table index i. However, good accuracy and relatively small possible rounding errors can be achieved by scaling the selected elements of the probability table probTabLPS with a scaling factor Qr²(R) depending on the interval size R. Furthermore, since the integer values obtained by the "round down" operator are scaled, an efficient scaling concept can be used, which can be defined, for example, by integer multiplication, integer division, or bit shifting operations. Therefore, the computational load is very small.
[0062] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0063]
[0064] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation; probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the value of I is usually greater than μ); R is the interval size (or the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0065] This method is particularly effective for obtaining interval size information and has been found to yield high-quality results for interval size information (obtained as a result of the first and second scaling).
[0066] In a preferred embodiment of this arithmetic encoder, the division residual of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value describes, for example, an extension of the probability table) is... Determine which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between probability index (i) and the first size value is... Determine the scaling factor used in the first scaling. And / or wherein the size of the encoding interval (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0067] By selecting elements of the probability table (which can be a one-dimensional probability table) based on the aforementioned division residuals, the fact that interval sizes are substantially similar across different ranges of the probability index, aside from scaling, can be utilized. Therefore, the probability table reflects values only within a single range of the probability index, and a first scaling is used to obtain interval size values for other ranges of the probability index. A second scaling adapts the values represented by the probability table, or the values obtained from the probability table using the first scaling, to the encoded interval size, thereby obtaining appropriate interval size information.
[0068] Therefore, a good balance can be achieved between memory consumption, computational complexity and accuracy, where, for example, if the first size value is chosen appropriately (e.g., performance of two), the division residual and integer division result can be obtained in a computationally very simple manner.
[0069] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0070]
[0071] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0072] This calculation rule implements the previously mentioned concepts in a highly efficient manner.
[0073] In a preferred embodiment of this arithmetic encoder, the two-dimensional lookup table can be represented as a binary product of the following two: a first one-dimensional vector (forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include the values of a first state variable and the values of a second state variable or their scaled and / or rounded versions. The probability values of different value intervals in the range; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0074] Such a two-dimensional lookup table can be effectively used to derive interval size information based on state variable values and encoded interval size information. The lookup within the two-dimensional lookup table corresponds to the mapping from state variable values to probability values and also to the multiplication of the obtained probability value with the encoded interval size. Therefore, interval size information that can be equal to the selected entry of the two-dimensional lookup table can be easily obtained, where each element of the two-dimensional lookup table can be selected depending on the individual state variable values and the encoded interval size information (where the individual state variable values determine the first index of the element of the two-dimensional lookup table, and the encoded interval size information determines the second index).
[0075] In a preferred embodiment, the arithmetic encoder is configured to: base its operation on a first state variable value and a second state variable value, or a scaled and / or rounded version thereof. Calculate the width of the first subinterval and the width of the second subinterval (R*p) respectively. k The calculation is performed by using its entries, which include scaled and / or rounded versions of the first and second state variable values or their respective values. A one-dimensional lookup table (LUT4) of the probability values of different intervals in the range of the first state variable value and the second state variable value (s) k (or its scaled and / or rounded version) Mapping to a first probability value and a second probability value, and quantizing the encoding interval size information (e.g., R) that describes the size of the encoding interval before the encoding of the symbol to a quantization level; determining, on the one hand, the product between the first probability value and the second probability value and the quantization level (by looking up a pre-computed product or by multiplication); and using the first sub-interval width value and the second sub-interval width value to obtain a combined sub-interval width value (e.g., using a weighted sum or using a weighted average).
[0076] It has been found that this method is also highly effective under certain conditions. The substantial individual processing of state variable values obtained using different adaptation time constants is maintained through most of the processing, by deriving the first subinterval width value based solely on the first state value (without considering the second state value) and calculating the second subinterval width value based solely on the second state variable value (without considering the first state variable value). Only in the final stage are the first and second subinterval width values combined to obtain a combined subinterval width value that yields high accuracy and avoids degradation. In some cases, degradation can occur if the first and second state variable values are combined too early.
[0077] In a preferred embodiment, the arithmetic encoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0078] This concept is particularly easy to implement because logical right shifts require minimal computational resources.
[0079] In a preferred embodiment, the arithmetic encoder is configured to... This is used to quantize the encoding interval size information R, where u, v, and w are parameters.
[0080] It has been found that such quantization can also be implemented very easily. Specifically, if the parameters u, v, and w are chosen as integer values (or integer values greater than 1), the computational work is minimal.
[0081] In a preferred embodiment of this arithmetic encoder, the entries of the one-dimensional lookup table are scaled and / or rounded according to the first state variable value and the second state variable value or their scaled and / or rounded versions. It increases and then decreases monotonically.
[0082] The monotonically decreasing number of entries using a one-dimensional lookup table has been shown to yield good results for information about interval size.
[0083] In a preferred embodiment of this arithmetic decoder, the values of the first and second state variables, or their scaled and / or rounded versions, are used. The range of values has different intervals of equal size.
[0084] Using such equal-sized value ranges allows for simple quantification. Furthermore, the equal-sized value ranges allow for the determination of elements in the lookup table with a moderate amount of work during operations.
[0085] In a preferred embodiment of this arithmetic encoder, the values of the first and second state variables, or their scaled and / or rounded versions, are used. The range of values has different intervals of equal size.
[0086] Such a monotonic decrease in the number of entries using a one-dimensional lookup table can be represented with good accuracy as an exponential decay.
[0087] An arithmetic encoder for encoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to be based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The multiple state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic encoder is configured to base its calculations on the multiple (individual) state variable values (s). i k To derive the combined state variable values (s) k (For example, it could be a weighted sum of state variable values), and wherein the arithmetic encoder is configured to use a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) which describes the interval size for the arithmetic encoding of one or more symbols to be encoded. k or R*p k ).
[0088] This embodiment of the invention is based on the idea that determining interval size information is highly efficient if the combined state variable values are determined before using a lookup table to perform the mapping. Therefore, it is no longer necessary to use two (or more) state variable values to perform a separate lookup table lookup. Instead, a single table lookup is sufficient to determine the interval size information. Specifically, it has been found that the combination of the first and second state variable values before performing the lookup table lookup significantly degrades the quality of the interval size information in many situations.
[0089] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of state variable values in order to obtain combined state variable values.
[0090] It has been found that calculating the weighted sum of the state variable values is an efficient way to determine the combined state variable values, and it is also well-suited for considering the different correlations between the two state variable values caused by the different adaptive time constants used when deriving the state variable values.
[0091] In a preferred embodiment, the arithmetic encoder is configured to determine the rounding value. The sum of these values is used to obtain the combined state variable values (s). k This rounding value is obtained by rounding the value of the state variable. Associated weighted values The product is obtained by rounding.
[0092] It has been found that performing rounding of the scaling values before performing the summation yields particularly meaningful results. A negligible contribution from one of the state variable values is eliminated through rounding without affecting the combined state variable values. Therefore, highly reliable results can be obtained, and the combined state variable values are typically rounded numerically, with the integer value being well-suited as an index for selecting elements in the lookup table.
[0093] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value s according to the following formula. k :
[0094]
[0095] Among them, s k 2 represents the state variable values, where N is the number of state variable values considered.
[0096] in This is the round-down operator, where d k i It is a weighted value associated with the values of state variables (e.g., a weighting factor that controls the influence of individual state variable values on the combined state variable value) (where d k iPreferably, it is the integer value performance of von 2, and wherein two different d k i The ratio between them is preferably an integer value of 2 (where the two different d values are performance values). k i The ratio between them is preferably greater than or equal to 8).
[0097] The concept used to derive combined state variable values yields highly meaningful combined state variable values, as explained earlier.
[0098] In a preferred embodiment, the arithmetic encoder is configured to change the state variable value to a first direction (e.g., become more positive) if the symbol to be encoded takes a first value (e.g., "encoded"), and to change the state variable value to a second direction (e.g., become more negative) if the symbol to be encoded takes a second value different from the first value (e.g., "different") (e.g., "same"). (e.g., making the state variable value both positive and negative), and wherein the arithmetic encoder is configured to base its state variable value on the absolute value of the combined state variable values (if s k i >0, then s k Otherwise it is -s k (For example, depending on the scaling and rounding version of the absolute values of the combined state variables) determine the entries of the lookup table to be evaluated.
[0099] The concept of determining the values of state variables (e.g., determining the value of a first state variable and determining the value of a second state variable) offers the same advantages as if a separate mapping of the first and second state variable values were used.
[0100] In a preferred embodiment, the arithmetic encoder is configured to, if the combined state variable value takes a first sign (e.g., a positive sign), then pass the probability value (p) k ) is set to a value provided by the lookup table (e.g., for Furthermore, the arithmetic encoder is configured to, if the combined state variable value takes a second sign (e.g., a negative sign), then assign a probability value (p) to the value. k The value is set to the value obtained by subtracting the value provided by the lookup table from a predetermined value (e.g., 1).
[0101] This concept for mapping combined state variable values to probability values is effective because it reduces the size of the lookup table. Specifically, it reduces the number of elements in the lookup table because the same element is associated with both a given positive combined state variable value and a negative version of that value. In other words, given a concept, the absolute value of the combined state variable determines which element of the lookup table is evaluated to provide the probability value.
[0102] However, by setting the probability value to a value provided by a lookup table that depends on the sign, or to a value obtained by subtracting the value provided by the lookup table from a predetermined value, the signs of the combined state variable values are still considered in an appropriate and efficient manner. Therefore, meaningful probability values can be obtained based on the combined state values with low computational complexity.
[0103] In a preferred embodiment, the arithmetic encoder is configured to determine the combination probability value p according to the following formula. k :
[0104]
[0105] Wherein, LUT2 is a lookup table containing probability values; where, It is the round-down operator; where s k It is the value of the combined variable; and among them, a k It is a weighted value associated with the combined state variable values (e.g., a weighted value that makes the range of numbers for the i-th state variable value applicable to the number of entries in the lookup table).
[0106] Based on the combined state variable value s k The concept of determining the probability value of a combination is implemented in a computationally efficient manner to realize the ideas outlined earlier.
[0107] In a preferred embodiment, the arithmetic encoder is configured to determine the combination probability value p according to the following formula. k :
[0108]
[0109] Wherein, LUT2 is a lookup table containing probability values; where, It is the round-down operator; where s k It is the value of the combined variable; and among them, a k It is a weighted value associated with the combined state variable values (e.g., a weighted value that makes the range of numbers for the i-th state variable value applicable to the number of entries in the lookup table).
[0110] In this concept, there is no scaled combined state variable value s. k The absolute value is calculated. Instead, there is only a "round down" operation, which is applied to scaled ("weighted") combined state variable values, which can be implemented with less effort than absolute value formation in some cases. Negation is applied only to integer values, which are obtained by rounding down (the round down operator) the weighted combined state variable values. However, taking negative integer values is generally less complex than taking negative fractional values or values represented in floating-point. Therefore, the concepts discussed here can help reduce complexity in some situations.
[0111] In a preferred embodiment, the arithmetic encoder is configured to use a two-dimensional lookup table to combine state variable values or their scaled and / or rounded versions. Mapped to sub-interval width value (R*p) k On the ), the entries of the two-dimensional lookup table are addressed based on the combined state variable values and the encoding interval size information (e.g., R) that describes the size of the encoding interval before the encoding of the symbol.
[0112] Using this concept, the mapping from combined state variable values to combined probability values and the multiplication of combined probability values with the encoding interval size can be combined into a single lookup table operation. Therefore, a two-dimensional lookup table is required, but multiplication operations are eliminated. The entries for the two-dimensional lookup table can be pre-computed, thus keeping the runtime combinatorial load extremely low. Instead, the first table index can be determined based on the combined state variable values or their scaled and / or rounded versions, and the second table index can be determined based on encoding interval size information (e.g., using rounding or quantization). The first step index and the second state index can uniquely identify the elements of the two-dimensional lookup table, and the identifying elements of the two-dimensional lookup table can be used as sub-interval width values (or, as interval size information). Thus, a highly efficient concept is obtained, eliminating computational complexity when sufficient memory for the lookup table is available.
[0113] In a preferred embodiment of the arithmetic encoder, the two-dimensional lookup table can be represented as a binary product of the following two elements: a first one-dimensional vector (LUT4[...]; forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include combined state variable values or their scaled and / or rounded versions. The probability values of different value intervals in the range; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0114] Such a two-dimensional lookup table yields excellent results. Specifically, all elements of this two-dimensional lookup table represent multiplications of individual probability values associated with the combined state variable values and the size of the encoding interval. Therefore, the two-dimensional lookup table described in this paper eliminates the need for multiplication, which can be considered highly resource-efficient.
[0115] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on the base lookup table (Base TabLPS), wherein the first set of elements (or blocks; e.g., "upper half") of the two-dimensional lookup table are the same as or rounded versions of the elements of the base lookup table, and wherein the second set of elements (or blocks; e.g., "lower half") of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0116] Two-dimensional lookup tables can be generated in a very simple way by defining their elements based on a basic lookup table. Furthermore, since the second set of elements in the two-dimensional lookup table is a scaled and rounded version of the elements in the basic lookup table (while the elements in the first set of elements in the two-dimensional lookup table are either the same as or rounded versions of the elements in the basic lookup table), it accurately reflects the exponential evolution of elements in the rows or columns of the two-dimensional lookup table. By using the concept that the second block of elements in a two-dimensional lookup table is essentially a scaled version of the first block of elements in the two-dimensional lookup table (except for rounding), the appropriate characteristics for mapping combined state variable values to interval size information can be reflected.
[0117] In a preferred embodiment of the arithmetic encoder, the second set of elements of the two-dimensional lookup table is a right-shifted version of the elements of the basic lookup table.
[0118] This allows for the simple generation of entries (elements) in a two-dimensional lookup table.
[0119] It has been found that right-shifting elements in a basic lookup table is a highly efficient concept for combining scaling and rounding operations.
[0120] In a preferred embodiment of this arithmetic encoder, the probability index (Qp2(p)) is used. LPS (i) Determine whether to evaluate the elements of the first set of elements in a two-dimensional lookup table or the elements of the second set of elements in a two-dimensional lookup table, where the probability index (e.g., by quantizing probability values (e.g., p)) LPS The first range (e.g., between 0 and μ-1) obtained is associated with the elements of the first set of elements, and wherein the probability index (e.g., by using a quantization function Qp2(.) to quantize the probability value (e.g., p) LPS The second range (e.g., greater than or equal to μ) obtained is associated with the elements of the second group of elements.
[0121] By using a probabilistic index, elements of a two-dimensional lookup table can be selected very efficiently. This index can be derived directly from the combined state variable values (without using probability values as intermediate quantities) or using combined probability values based on the combined state variable values. Furthermore, the probabilistic index is used to switch between elements using the first set of elements and elements using the second set of elements, allowing for efficient determination of elements of the two-dimensional lookup table during operation.
[0122] 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., μ; where the size value describes, for example, the expansion of the basic lookup table in the first direction) and the interval size index (e.g., which can be obtained based on the interval size information R, for example using the quantization operation Qr2(.)(e.g., j);) determine which element of the basic lookup table is used to obtain the element of the two-dimensional lookup table.
[0123] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements of the two-dimensional lookup table (RangTabLPS) according to the following formula:
[0124]
[0125] Where BaseTabLPS is a basic lookup table of size μ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., describing the size of the current encoding interval); where % is the division residual operation; where / is the division operation; and where Scal(x, y) is the scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0126] By evaluating the division residual to determine which element of the base lookup table is used to obtain an element of the two-dimensional lookup table, elements of the two-dimensional lookup table can be determined in operation with extremely high efficiency. Specifically, the division residual can be used to reflect the fact that the two-dimensional lookup table comprises two or more groups of elements based on the same element of the base lookup table, and this residual is used to determine which element of the base lookup table is used to obtain an element of the two-dimensional lookup table. In other words, the division residual effectively reflects the periodic relationship between the elements of the two-dimensional lookup table and the elements of the base lookup table, since the division residual is also periodic as the probability index increases.
[0127] In a preferred embodiment of the arithmetic encoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) encoding interval size, and wherein scaling is used to derive elements of a two-dimensional lookup table from the probability table for probability values not in the set of multiple probability values and / or for encoding interval sizes different from the given encoding interval size.
[0128] This concept is based on the same considerations as the corresponding concept described in the case of a separate mapping for the values of state variables.
[0129] In a preferred embodiment of the arithmetic encoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) encoding interval size, and wherein scaling is used to derive elements of a two-dimensional lookup table from the probability table for probability values not in the set of multiple probability values and / or for encoding interval sizes different from the given encoding interval size.
[0130] It has been found that determining the elements of a two-dimensional lookup table in such an operation involves particularly high resource efficiency. Furthermore, it should be noted that the comments above regarding the corresponding algorithms used in the context of separate mappings of the first and second state variable values also apply. Extremely high efficiency can be achieved by using a probability table, typically smaller than (e.g., containing fewer elements) a two-dimensional lookup table, as the basis for determining the elements of the two-dimensional lookup table. For example, the probability table can represent mappings of different probability values and different (quantization) encoding interval sizes over a significant range, and can thus help avoid multiplication other than simple scaling (where “simple” scaling can be implemented, for example, using bitwise operations).
[0131] Scaling is used to derive from the probability table one or more probability values not in the set of multiple probability values and elements of a two-dimensional lookup table for one or more coding interval sizes different from the given coding interval size. Therefore, a minimal probability table is sufficient, which may, for example, consist of only one row or one column. Thus, the number of elements in the probability table can even be less than the number of distinct possible probability values (i.e., less than the number of distinct possible probability indices in the two-dimensional lookup table). Furthermore, it should be noted that the scaling depends on the probability values and / or on the coding interval size. The scaling can be performed, for example, using a very simple mechanism, such as bit shifting operations, if the size of the probability table is chosen appropriately. Such a "simple" scaling operation based on bit shifting requires significantly fewer computational resources when compared with "common" multiplications with arbitrary variable operands (e.g., different performance than two).
[0132] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table are obtained by a first scaling (multiplication) of selected elements (probTabLPS[i%μ]) of the probability table, which depends on the size (R) of the encoding interval, and a second scaling, which depends on the result of the first scaling, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table).
[0133] It has been found that this computation of elements in a two-dimensional lookup table is particularly efficient. Furthermore, reference has been made to the preceding discussion of the corresponding functionality within the context of the separate mappings of the first and second state variable values.
[0134] In a preferred embodiment of the arithmetic encoder, the division residual (i%μ) of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor used in the second scaling. And / or where the size of the encoding interval determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0135] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0136] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0137]
[0138] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation; probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the value of I is usually greater than μ); R is the interval size (or the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0139] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0140] In a preferred embodiment of the arithmetic encoder, the elements of the two-dimensional lookup table are obtained by a first (multiplicative) scaling of the selected elements (probTabLPS[i%μ]) of the probability table, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table). The elements are obtained by a second scaling, which depends on the result of the first scaling, which depends on the size (R) of the encoding interval.
[0141] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0142] In a preferred embodiment of this arithmetic encoder, the division residual of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value describes, for example, an extension of the probability table) is... Determine which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between probability index (i) and the first size value is... Determine the scaling factor used in the first scaling. And / or wherein the size of the encoding interval (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0143] Regarding this functionality, the discussion of the corresponding functionality provided above in the context of the separate mapping of the first and second state variable values is also referenced, in which combined state variable values or combined probability values are used instead of individual state variable values or individual probability values.
[0144] In a preferred embodiment, the arithmetic encoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0145]
[0146] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0147] Regarding this functionality, reference is also made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first and second state variable values, where the combined state variable value replaces the individual state variable value, and where the combined probability value replaces the individual probability value.
[0148] In a preferred embodiment, the arithmetic encoder is configured to: base its calculations on the combined state variable values or their scaled and / or rounded versions. To calculate the sub-interval width value (R*pk), the calculation is performed by using entries that include a scaled and / or rounded version of the combined state variable values or their combined values. A one-dimensional lookup table (LUT4) of the probability values of different value intervals in the range of the combined state variable values (s) k (or its scaled and / or rounded version) Mapping to the combined probability value, and quantizing the coding interval size information (e.g., R) that describes the size of the coding interval before the coded symbol to the quantization level; calculating the product between the combined probability value and the quantization level (either by looking up the pre-computed product or by multiplication).
[0149] Regarding this functionality, reference is also made to the discussion of the corresponding functionality provided above in the context of the separate mapping of the first and second state variable values, where the combined state variable value replaces the individual state variable value, and where the combined probability value replaces the individual probability value.
[0150] In a preferred embodiment, the arithmetic encoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0151] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0152] In a preferred embodiment, the arithmetic encoder is configured to... This is used to quantize the size information R of the encoded interval, where u, v, and w are parameters.
[0153] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0154] In a preferred embodiment of this arithmetic encoder, the entries in the one-dimensional lookup table are updated according to the combined state variable values or their scaled and / or rounded versions. It increases and then decreases monotonically.
[0155] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0156] In a preferred embodiment of this arithmetic encoder, the combination of state variable values or their scaled and / or rounded versions is used. The range of values has different intervals of equal size.
[0157] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0158] In a preferred embodiment of this arithmetic encoder, the entries in the one-dimensional lookup table are updated according to the combined state variable values or their scaled and / or rounded versions. The increase is accompanied by a monotonically decreasing rate.
[0159] Regarding this functionality, reference is also made to the discussion above regarding the corresponding functionality provided in the context of separate mappings of the first and second state variable values.
[0160] In a preferred embodiment of the arithmetic encoder, the lookup table defines an exponential decay (e.g., decreasing from 0.5) within a tolerance of + / -10% or + / -20%.
[0161] It has been found that exponential decay reflects well the appropriate relationship for deriving interval size information based on the values of state variables. Moreover, exponential decay can be represented very efficiently using lookup tables, where it is possible to determine the elements of the lookup table even during operation with minimal effort.
[0162] In a preferred embodiment, the arithmetic encoder is configured to update the state values of multiple variables according to the following formula.
[0163]
[0164] Where z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values, where, Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) Having greater than The range of values; that is, Quantized to
[0165] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or zeroed out, where offset, and These are predefined parameters (examples have been provided above).
[0166] It has been found that such updates to state variables can be performed with high computational efficiency, where the mapping table can be pre-computed. For example, state variable values can be implemented... The values are kept within a predetermined range (e.g., between a predetermined minimum and a predetermined maximum). Furthermore, by appropriately choosing the mapping table A, the state variable values can be well adapted to a statistical description of the previously processed (e.g., encoded or decoded) symbols. Moreover, it should be noted that the adaptation time constants of the individual state variable values can be adapted by appropriately choosing the weighting values m and n. Therefore, the algorithm described herein can be efficiently used to update the state variable values.
[0167] In a preferred embodiment, the arithmetic encoder is configured to derive by table lookup or by calculation.
[0168] Therefore, different concepts can derive updated state variable values.
[0169] An arithmetic encoder for encoding multiple symbols having symbolic values (e.g., binary values) is created according to an embodiment of the present invention, wherein the arithmetic encoder is configured to determine one or more state variable values (s1). k s2 k The one or more state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants in the case of multiple state variable values), and wherein the arithmetic encoder is configured to base its calculations on one or more state variable values (s). i k (For example, associated with a given context pattern, indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p kThe one or more state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants in the case of multiple state variable values), wherein the arithmetic encoder is configured to update the first state variable value (s) depending on the symbol to be encoded and using a lookup table (A) (e.g., after encoding the symbol to be encoded). k 1).
[0170] This embodiment of the invention is based on the discovery that updates to state variable values used to derive interval size information for arithmetic encoding (e.g., encoding or decoding) can be performed with particularly good results using lookup tables. This is because using lookup tables allows for updates to state variable values, which are particularly well adapted to the characteristics of the signals to be encoded or decoded. For example, lookup tables can be readily used to represent fine-tuning relationships between “old” state variable values and updated state variable values without requiring extensive calculations (e.g., evaluations of trigonometric, exponential, or logarithmic functions). Therefore, using lookup tables to implement updates to state variable values helps keep computational complexity relatively small. Ideally, in addition to lookup table lookups, only multiplication (or simple multiplication, e.g., bit shifting), rounding, and addition are used to obtain updated state variable values based on “old” state variable values. For example, the currently processed symbol (e.g., the symbol to be encoded or decoded) determines which part of a mapping rule, for example, based on a lookup table, is evaluated to obtain the updated state variable value.
[0171] In summary, it has been found that using lookup tables to provide updated state variable values offers both high flexibility and low computational complexity.
[0172] In a preferred embodiment, the arithmetic encoder is configured to update the second state variable value (s) based on the symbol to be encoded and using the lookup table (A) (e.g., after encoding the symbol to be encoded). k 2).
[0173] It has been found advantageous to use the same lookup table to update the second state variable, the value of which is used to update the value of the first state variable. For example, one or more scaling factors can be used to account for possible differences in the adaptation time constants of the first and second state variable values; these scaling factors can be applied, for example, to the selection of elements in the lookup table and / or to scaling the selected elements of the lookup table. In summary, even if only a single lookup table is used to derive two or more state variable values, the two or more state variable values can be adapted to represent different statistical properties of the processed symbol values (i.e., previously encoded or decoded symbol values).
[0174] In a preferred embodiment, the arithmetic encoder is configured to update the values of the first state variable and the second state variable using different adaptation time constants.
[0175] By updating the values of the first and second state variables using different adaptation time constants, the different statistical properties of previously processed symbols can be reflected in the state variable values. It has been found that the availability of state variable values representing the statistics of processed symbols with different adaptation time constants is highly helpful for the accurate adjustment of the interval size used for arithmetic encoding (encoding / decoding) of symbols. Furthermore, it has been found that lookup table-based updates of state variable values offer extremely high reliability and low computational complexity.
[0176] In a preferred embodiment, the arithmetic encoder is configured to selectively increase or decrease the value of a previous state variable using a lookup table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value.
[0177] By using such a method, the state variable value can be adapted recursively, where processing symbols (e.g., the symbol to be encoded, or a previously encoded or previously decoded symbol) determines the direction of the change in the state variable value (increase or decrease). On the other hand, the magnitude of the adaptation (i.e., increase or decrease) is determined by the selected lookup table entry, where scaling can be applied. Therefore, an efficient mechanism exists for updating state variable values, providing a high degree of flexibility while remaining highly resource-efficient.
[0178] In a preferred embodiment, the arithmetic encoder is configured to increase the value of the previous state variable by a relatively large value when the previous state variable value is negative, compared to when the previous state variable value is positive when the symbol to be encoded takes a first value; and wherein the arithmetic encoder is configured to decrease the value of the previous state variable by a relatively large value when the previous state variable value is positive, compared to when the previous state variable value is negative when the symbol to be encoded takes a second value different from the first value (this is obtained, for example, through appropriate selection of a lookup table).
[0179] Using this method, we can obtain the state variable values evolving exponentially towards a maximum positive value and exponentially towards a minimum value. This approximation of the (positive) maximum and the (negative) minimum can be approximated asymptotically. In other words, the further the current state variable value is from the (positive) maximum, the larger the (increasing) step towards the (positive) maximum, and the further the current state variable value is from the (negative) minimum, the larger the (decreasing) step towards the (negative) minimum. Therefore, this concept can be used to approximate exponential asymptotic behavior. However, it has been found that this concept is very well suited for updating state variable values. Specifically, it has been found that such a method is well suited for the "infinite impulse response" method used to determine the state variable values.
[0180] In a preferred embodiment, the arithmetic encoder is configured to, if the symbol to be encoded takes a first value, depend on a predetermined (e.g., fixed) offset value (z) and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the first state variable; and the arithmetic encoder is configured to, if the symbol to be encoded takes a second value, depend on a predetermined (e.g., fixed) offset value (z) and the inverse (multiplied by -1) version of the previously calculated value of the first state variable. Or a scaled and / or rounded version thereof (e.g., a negated version of the previously calculated first state variable value). The sum of these values determines the index of the entry in the lookup table evaluated when updating the value of the first state variable.
[0181] Using this method, appropriate entries for the lookup table can be selected with a moderate amount of effort, taking into account the symbols currently being processed. Both the previously calculated state variable value and the processed (encoded or decoded) symbol determine the selection of the lookup table entry, and thus determine how much the updated state variable value has increased or decreased when compared to the previously calculated state variable value. For example, the offset value can ensure that the sum of the previously calculated state variable value, scaled (and potentially inverted, depending on the processed symbol), produces a valid lookup table index, since a valid lookup table index is typically non-negative. Using this concept, appropriate lookup table indices can be easily selected and updated state variable values can be efficiently provided.
[0182] In a preferred embodiment, the arithmetic encoder is configured to, if the symbol to be encoded takes a first value, depend on a predetermined (e.g., fixed) offset value (z) and a previously calculated second state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the second state variable; and the arithmetic encoder is configured to, if the symbol to be encoded takes a second value, depend on a predetermined (e.g., fixed) offset value (z) and the inverse (multiplied by -1) version of the previously calculated value of the second state variable. Or its scaled and / or rounded version (e.g., a negated version of the previously calculated second state variable value). The sum of these values determines the index of the entry in the lookup table evaluated when updating the value of the second state variable.
[0183] The concept for updating the value of the second state variable is substantially the same as the concept for updating the value of the first state variable, wherein, for example, the same lookup table can be evaluated as saving memory resources, and wherein, for example, different scaling values can be used compared to updating the value of the first state variable to obtain modified state variable value update characteristics. For example, different adaptation time constants for the first state variable value and for the state variable value can be obtained by using different scaling values for determining the updating of the first state variable value and the updating of the second state variable value.
[0184] In a preferred embodiment, the arithmetic encoder is configured to apply a first scaling value (m) when determining the index of the entry in the lookup table evaluated when updating the value of the first state variable. k 1), based on the previously calculated first state variable value (s) k 1) Scaling is performed, wherein the arithmetic encoder is configured to apply a second scaling value (m) when determining the index of the entry of the lookup table evaluated when updating the value of the second state variable. k 2), to the previously calculated value of the second state variable (s) k 2) Scaling is performed, wherein the first scaling value is different from the second scaling value (and wherein the first scaling value and the second scaling value are preferably integers of 2, and wherein the ratio between the first scaling value and the second scaling value is preferably an integer of 2, wherein the first scaling value and the second scaling value preferably differ by a factor of at least 8).
[0185] By using different scaling values when determining the indices of the lookup table entries evaluated when updating the first state variable value and when determining the indices of the lookup table entries evaluated when updating the second state variable value, different adaptive time constants can be effectively implemented. This allows for the implementation of the same basic state variable value update algorithm and lookup table, where the only significant difference can be the choice of scaling value. This enables substantial resource savings.
[0186] In a preferred embodiment, the arithmetic encoder is configured to use a first scaling value (e.g., n) when updating the value of the first state variable. k 1) Scale the value returned by the evaluation through the lookup table, wherein the arithmetic encoder is configured to use a second scaling value (e.g., n) when updating the value of the second state variable. k 2) Scale the values returned by the evaluation through the lookup table, where the first scaling value is different from the second scaling value.
[0187] The different scaling described by the values returned through the evaluation of the lookup table (e.g., selected lookup table entries) allows for efficient implementation of different adaptive time constants when updating the values of the first and second state variables. Furthermore, such scaling allows the same lookup table to be used for updating both the first and second state variable values, which helps save memory resources.
[0188] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0189]
[0190] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0191] It has been found that such update mechanisms for state variable values can be implemented with high computational efficiency and provide reliable results.
[0192] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0193]
[0194] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0195] It has been found that such mechanisms for updating state variable values can be highly advantageous in certain situations. Specifically, it is unnecessary to use such a method to invert floating-point values, which can be computationally inefficient in some implementations. Therefore, the concept of this invention can provide excellent resource efficiency in some cases.
[0196] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0197]
[0198] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0199] It has been found that this concept also brings particularly high computational efficiency and good accuracy in some implementation environments.
[0200] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0201]
[0202] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0203] It has been found that, in some situations, this concept also brings advantages in terms of computational efficiency and reliability.
[0204] In a preferred embodiment of this arithmetic encoder, the entries for A decrease monotonically as the lookup table index increases.
[0205] Using this method, it is possible to achieve an approximation of state variable values toward their maximum or minimum values that is monotonically and / or continuously and / or asymptotically approaching. For example, state variables far from their respective maximum or minimum values can be made to modify toward their maximum or minimum values relatively quickly, while those closer to their respective maximum or minimum values change toward their maximum or minimum values relatively slowly. Therefore, the aforementioned selection of entries in the lookup table allows for a smooth approximation of the maximum or minimum values, which has been found to be very helpful in deriving interval size information based on one or more state variable values.
[0206] In a preferred embodiment of this arithmetic encoder, A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) Having greater than The range of values; that is, Quantized to
[0207] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or zeroed out, where offset, and These are predefined parameters (examples have been provided above).
[0208] It has been found that this choice of lookup table A results in particularly favorable behavior for the state variable values that are updated using the lookup table A.
[0209] In a preferred embodiment of the arithmetic encoder, the last entry of the lookup table (when the first state variable value extends to a predetermined range of the maximum allowable value or when the first state variable value exceeds a predetermined threshold) is equal to zero.
[0210] By using the last entry in the lookup table that is equal to 0, it is easy to avoid updating the state variable value beyond the maximum and / or minimum value.
[0211] In a preferred embodiment, the arithmetic encoder is configured to apply a limiting operation to update the state variable value so that the updated and limited state variable value remains within a predetermined range.
[0212] Using such a mechanism, it is easy to prevent the value of the state variable from exceeding a predetermined range between the minimum and maximum values. Therefore, it can be ensured that the value of the state variable takes a "reasonable" value.
[0213] In a preferred embodiment, the arithmetic encoder is configured to apply a limiting operation to update the state variable value according to the following formula.
[0214]
[0215] ,in It is used for The maximum allowed value, and where, It is used for The minimum allowed value.
[0216] It has been found that such limiting operations can be implemented efficiently and avoid invalid state variable values.
[0217] In a preferred embodiment, the arithmetic encoder is configured to apply different scaling values for different context models (e.g., such that at least one of the scaling values is different between two different context models).
[0218] By using different scaling values for different context models, the different statistical properties of those context models can be taken into account (which can be associated with different types of information and / or different types of bitstream syntax elements). By using different scaling values for different context models, the updater for state variable values can be easily adapted to different context models without fundamentally changing the underlying algorithm. Therefore, appropriate scaling values can be obtained in a very efficient manner.
[0219] In a preferred embodiment, the arithmetic encoder is configured to obtain interval size information as defined in one of the above embodiments.
[0220] It has been found that the concepts used to update the values of state variables can be used effectively in conjunction with the concepts mentioned above used to derive information about the size of intervals.
[0221] An arithmetic encoder for encoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to be based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for the arithmetic encoding of one or more symbol values to be encoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a statistical representation of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic encoder is configured to use a base lookup table (Base TabLPS) to determine the interval size value (R). LPS ), (the size of the basic lookup table is less than the number of possible probability indices i in terms of probability indexes), where the arithmetic encoder is configured to determine the interval size value (R). LPS ), such that if the probability index (i) obtained based on one or more state variable values (e.g., i = Qp(p LPS If the probability index is in a first range (e.g., less than μ), the determined interval size value is the same as an element of the base lookup table or a rounded version of an element of the base lookup table, and such that if the probability index is in a second range (e.g., greater than or equal to μ), the determined interval size value is obtained by scaling and rounding the elements of the base lookup table; and wherein the arithmetic encoder is configured to use the interval size value (R LPS ) to perform arithmetic encoding of one or more symbols.
[0222] This embodiment of the invention is based on the idea that the determination of interval size values in the arithmetic encoder can be performed using a "basic lookup table" by reusing elements of the basic lookup table (once with and once with scaling), the size of which is less than the number of different interval size values associated with a given current encoded interval size. Therefore, the interval size values associated with different ranges of state variable values used for arithmetic encoding (encoding / decoding) can be substantially different through scaling (e.g., aside from some rounding). Thus, a relatively small "basic lookup table" can be used, whose entries are used multiple times for different probability indices (wherein, the probability index may be derived based on individual state variable values).
[0223] In summary, the concepts described herein allow for the efficient determination of interval size values based on one or more state variable values.
[0224] In a preferred embodiment, the arithmetic encoder is configured to determine an interval size value such that if the probability index is within a second range, the determined interval size value (R) is... LPS ) is a right-shifted version of the elements of the basic lookup table.
[0225] This concept is based on the idea that right shift is computationally efficient and provides a reliable interval size value if the probability index is in the second range (while preferably, if the probability index is in the first range, the shift operation is not applied to the elements of the basic lookup table). Therefore, the interval size values provided for the "corresponding" probability indices in the first and second ranges differ primarily through bit shifting (aside from possible rounding). This generally holds true for the range of probability index values or even for the entire "first range" (which typically includes more than two distinct values). Furthermore, it should be noted that right shift typically corresponds to division with efficiency of 2.
[0226] In a preferred embodiment, the probability index (Qp2(p)) LPS Determine whether an element of the lookup table has been provided as the range size value (R). LPS ), or check if the elements of the lookup table have been scaled and rounded to obtain the range size value (R). LPS ).
[0227] Since the probability index (or more specifically, the question of whether the probability index is in a first or second range) determines whether scaling (and optionally rounding) is applied to obtain the interval size value based on the elements of the lookup table (basic lookup table), the algorithm can remain very simple. For example, checking whether the probability index is in a first or second range can be easily performed by dividing the probability index by a predetermined value or by comparing the probability index with one or more thresholds. Therefore, it can be easily determined whether scaling (and optionally rounding) should be performed based on the probability index. Thus, the concept used to derive the interval size value is very efficient.
[0228] 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., μ; where the size value describes, for example, the expansion of the base lookup table in the first direction) and the interval size index (e.g., which can be obtained based on interval size information or total interval size information R, for example using the quantization operation Qr2(.)) determine which element of the base lookup table is used to obtain the interval size value.
[0229] A two-dimensional basic lookup table can be readily evaluated by selecting entries based on both the division residual and the interval size index, where each element can contain multiplications with the interval size value (which can be represented by the interval size index). Therefore, multiplications with the interval size value can be omitted by having a two-dimensional basic lookup table (where the division residual can be used as the first table index, and the interval size index can act as the second table index). Furthermore, using the division residual as the first table index is well-suited to the fact that elements of the basic lookup table are cyclically selected as the probability index increases (because subsequent ranges of the probability index select the common range of the basic lookup table). In summary, the above implementation allows for very simple access to the elements of the basic lookup table and helps avoid multiplications with the interval size value due to the two-dimensional nature of the basic lookup table.
[0230] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0231]
[0232] Where BaseTabLPS is a basic lookup table of size μ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., total interval size information R); where % is the division residual operation; where / is the division operation; and where Scal(x, y) is the scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0233] It has been found that such a concept for determining the interval size value that constitutes the interval size information is computationally highly efficient and allows for the use of a relatively small basic lookup table. Specifically, multiplication operations can be avoided. Furthermore, division residual operations and division operations can also be implemented in a computationally efficient manner, for example, when the size μ is 2. Therefore, the concept described for deriving the interval size value allows for computationally very efficient implementation.
[0234] In a preferred embodiment, the arithmetic encoder is configured to base its operation on one or more state variable values (s). i k(For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for the arithmetic encoding of one or more symbol values to be encoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1 with different adaptation time constants); wherein the arithmetic encoder is configured to determine the interval size value (R) using a probability table (Prob TabLPS) based on (current) probability values derived from the one or more state variable values and based on the (current) encoded interval size (R). LPS ), (the size of the probability table is less than the number of possible probability indices i in terms of probability indices), wherein the probability table describes a set of multiple probability values (e.g., probability indices between 0 and μ-1) and a range size (range size value) for a (single) given (reference) coding range size, and wherein the arithmetic encoder is configured to scale the elements of the probability table (Prob_TabLPS) (e.g., elements selected depending on the current probability value) to obtain the range size value (R) if the current probability value is not among the set of multiple probability values (e.g., the probability index associated with the current probability value is greater than or equal to μ) and / or if the current coding range size (R) is different from the given coding range size. LPS ); and wherein the arithmetic encoder is configured to use the interval size value (R) LPS ) to perform the arithmetic encoding of one or more symbols.
[0235] This concept is based on the idea that the interval size values associated with different (non-overlapping) ranges of probability values (or probability indices) are essentially related through scaling operations (besides possible rounding). It should also be noted that, if the size of the lookup table (probability table) is chosen appropriately, the scaling operations can be implemented, for example, in a computationally efficient manner (e.g., using bit shifting operations). Therefore, the interval size values for arithmetic encoding (encoding or decoding) can be derived with minimal computational effort and using only a small, memory-efficient lookup table.
[0236] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value by using a (multiplicative) first scaling of a probability table (probTabLPS[i%μ]) that depends on the (current) encoded interval size (R) and a second scaling that depends on whether the element associated with the current probability value (indicated by 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).
[0237] By using two-step multiplication or scaling, small probability tables can be used to obtain interval size information. For example, a probability table may only "directly" cover a given, relatively small range of a single encoded interval size and probability value (which may be represented by "the set of multiple probability values"). Therefore, for any other encoded interval size and for any probability value not included in the set of multiple probability values "directly" covered by the probability table, scaling is performed to obtain a meaningful and reliable interval size value.
[0238] In a preferred embodiment of the arithmetic encoder, the division residual (i%μ) of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor used in the second scaling. And / or where the encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) for the first scaling.
[0239] Using division residuals to determine which element of the probability to scale helps to take advantage of the fact that entries in a probability table are reused (e.g., cyclically) as the probability index increases. This fact is represented using division residuals. Moreover, division residuals can be computed with extremely high computational efficiency in some cases, especially when performing division with the efficiency of 2.
[0240] Furthermore, determining the scaling factor based on the integer division result allows for easy assignment of the scaling factor to different (neighboring) ranges of probability index values. Additionally, in some cases, the integer division result can be computed computationally efficiently, especially when performing division with a potency of 2.
[0241] Furthermore, determining the multiplication scaling factor based on the encoding interval size reflects the fact that the interval size value scales with the encoding interval size. Therefore, the interval size value can be obtained with high efficiency and high accuracy.
[0242] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0243]
[0244] Where i is the table index associated with probability information; j is the table index associated with 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 (where the range of values for i is typically greater than μ); R is the interval size (e.g., the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0245] Algorithms for determining interval size values have been found to be computationally efficient and 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 shift operations.
[0246] In a preferred embodiment, the arithmetic encoder is configured to obtain interval size information by using a first (multiplicative) scaling of selected elements (probTabLPS[i%μ]) of a probability table that depends on whether the element associated with the current probability value (indicated 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).
[0247] In this concept, the processing order of the first and second scaling is reversed compared to the concept described above. However, the basic considerations remain the same.
[0248] In a preferred embodiment, the division residual (i%μ) of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor to be used in the first scaling (e.g., or ); and / or where the (current) encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) for the second scaling.
[0249] In this concept, the order of the first and second scaling is reversed compared to the concept described above. However, the basic considerations remain the same.
[0250] In a preferred embodiment, the arithmetic encoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0251]
[0252] 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; ... in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0253] In this concept, the scaling order of the first and second scaling is reversed compared to the implementation described above. However, the basic underlying idea remains unchanged.
[0254] Several embodiments relating to arithmetic decoding will be described below. However, the ideas, considerations, and details behind these ideas relating to arithmetic decoding are substantially the same as those behind the concepts used for arithmetic encoding. Therefore, the above explanations also apply in a similar manner. However, the symbol value to be encoded corresponds to the symbol value to be decoded or a previously decoded symbol, and the previously encoded symbol value corresponds to the previously decoded symbol value. Furthermore, the correspondence between encoding features and decoding features will be obvious to those skilled in the art, and is also apparent from a comparison of the wording of the claims.
[0255] An arithmetic decoder for decoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to be based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for arithmetic decoding of one or more symbol values to be decoded. LPSThe one or more state variable values represent (e.g., sequences of binary values 0 and 1) a statistical representation of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic decoder is configured to use a base lookup table (Base TabLPS) to determine the interval size value (R). LPS ), (the size of the basic lookup table is less than the number of possible probability indices i in terms of probability indexes), where the arithmetic decoder is configured to determine the interval size value (R). LPS ), such that if the probability index (i) obtained based on one or more state variable values (e.g., i = Qp(p LPS If the probability index is within a first range (e.g., less than μ), the determined interval size value is the same as an element of the base lookup table or a rounded version of an element of the base lookup table, and such that if the probability index is within a second range (e.g., greater than or equal to μ), the determined interval size value is obtained by scaling and rounding the elements of the base lookup table; and wherein the arithmetic decoder is configured to use the interval size value (R) LPS ) to perform the arithmetic decoding of one or more symbols.
[0256] In a preferred embodiment, the arithmetic decoder is configured to determine an interval size value such that if the probability index is in the second range, the determined interval size value (R) is... LPS ) is a right-shifted version of the elements of the basic lookup table.
[0257] In a preferred embodiment of this arithmetic decoder, the probability index (Qp2(p)) LPS Determine whether an element of the lookup table has been provided as the range size value (R). LPS ), or check if the elements of the lookup table have been scaled and rounded to obtain the range size value (R). Lps ).
[0258] 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., μ; where the size value describes, for example, the expansion of the base lookup table in the first direction) and the interval size index (e.g., which can be obtained based on interval size information or total interval size information R, for example using the quantization operation Qr2(.)) determine which element of the base lookup table is used to obtain the interval size value.
[0259] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0260]
[0261] Where BaseTabLPS is a basic lookup table of size μ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., total interval size information R); where % is the division residual operation; where / is the division operation; and where Scal(x, y) is the scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0262] An arithmetic decoder for decoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to be based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for arithmetic decoding of one or more symbol values to be decoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a plurality of previously decoded symbol values (e.g., sequences of binary values 0 and 1 with different adaptation time constants), wherein the arithmetic decoder is configured to determine the interval size value (R) using a probability table (Prob TabLPS) based on (current) probability values derived from the one or more state variable values and based on the (current) encoded interval size (R). LPS ), (the size of the probability table is less than the number of possible probability indices i in terms of probability indices), wherein the probability table describes a set of multiple probability values (e.g., probability indices between 0 and μ-1) and a range size (range size value) for a (single) given (reference) coding range size, and wherein the arithmetic decoder is configured to scale the elements of the probability table (Prob_TabLPS) (e.g., elements selected depending on the current probability value) to obtain the range size value [R] when the current probability value is not in the set of multiple probability values (e.g., the probability index associated with the current probability value is greater than or equal to μ) and / or when the current coding range size (R) is different from the given coding range size. LPS ); and wherein the arithmetic decoder is configured to use the interval size value (R) LPS ) to perform the arithmetic decoding of one or more symbols.
[0263] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value by using a (multiplicative) first scaling of selected elements (probTabLPS[i%μ]) of a probability table that depends on the (current) encoded interval size (R) and a second scaling by using the result of the first scaling that depends on whether the element associated with the current probability value (indicated by 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).
[0264] In a preferred embodiment of the arithmetic decoder, the division residual (i%μ) of the division between the probability index (e.g., i; e.g., representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor used in the second scaling. And / or where the encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) for the first scaling.
[0265] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0266]
[0267] Where i is the table index associated with probability information; j is the table index associated with 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 (where the range of values for i is typically greater than μ); R is the interval size (e.g., the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0268] In a preferred embodiment, the arithmetic decoder is configured to obtain interval size information by using a (multiplicative) first scaling of a selected element (probTabLPS[i%μ]) of a probability table that depends on whether the element associated with the current probability value (indicated 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).
[0269] In a preferred embodiment of the arithmetic decoder, the division residual (i%μ) of the division between the probability index (e.g., i; e.g., representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor to be used in the first scaling (e.g., or ); and / or where the (current) encoding interval size (R) determines the multiplicative scaling factor (Qr2(R)) for the second scaling.
[0270] In a preferred embodiment, the arithmetic decoder is configured to obtain the interval size value R according to the following formula. XPS (For example, R) LPS ):
[0271]
[0272] Where i is the table index associated with probability information; where j is the table index associated with (current) interval size information; where % is the division residual operation;
[0273] Where / is a division operation (e.g., providing an integer result); where probTabLPS[] is the probability table; where μ is a plurality of elements in the probability table (where the range of values for i is typically greater than μ); where R is the interval size (e.g., the size of the current encoding interval); where Qr2(R) is a scaling factor dependent on R; where Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0274] The following will discuss some additional embodiments related to arithmetic coding.
[0275] An arithmetic encoder for encoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic encoder is configured to determine a state variable value (s). k The state variable value represents a statistical representation of multiple previously encoded symbol values, and the arithmetic encoder is configured to: combine the state variable values or their scaled and / or rounded versions. To calculate the sub-interval width value (R) of the arithmetic code used to encode the symbol value to be encoded. LPS The calculation is performed by using its entries to include combinations of state variable values or their scaled and / or rounded versions. A one-dimensional lookup table (probTabLPS[Qp2(...)]) represents the probability values of a state variable (s) across different intervals of its range. k (or its scaled and / or rounded version) Mapped to probability values; and encoding interval size information (e.g., R) describing the size of the encoding interval for arithmetic encoding before the arithmetic encoding of the symbol to be encoded is quantized to a quantization level (Qr2(R)); the product between the probability value and the quantization level is determined (by a lookup of the pre-computed product or by multiplication), wherein the arithmetic encoder is configured to perform state variable value updates depending on the symbol value to be encoded.
[0276] This embodiment, based on a very simple one-dimensional lookup table, can be used to determine the sub-interval width value based on the combined state variable values. The encoded interval size is considered by quantizing the encoded interval size information and determining the product between the probability value and the quantization value (or, quantization level). Therefore, reliable results can be obtained with a moderate workload.
[0277] In a preferred embodiment, the arithmetic encoder is configured to base its operation on a plurality of 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, for statistics with different adaptive time constants) to derive as a state variable value (s k The combined state variable values (e.g., a weighted sum of state variable values) represent the statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants.
[0278] It has been found that using a combination of state variable values as a single state variable value yields particularly good results. Consideration of different adaptation time constants allows for the inclusion of both short-term and long-term statistics, thus making the subinterval width values especially reliable.
[0279] In a preferred embodiment, the arithmetic encoder is configured to determine a weighted sum of state variable values in order to obtain combined state variable values.
[0280] This method of calculating the values of combined state variables allows for consideration of the different effects of short-term and long-term statistics on the values of combined state variables, while keeping the computational workload relatively small.
[0281] In a preferred embodiment, the arithmetic encoder is configured to determine the rounding value. The sum of these values is used to obtain the combined state variable values (s). k This rounding value is obtained by rounding the value of the state variable. Associated weighted values The product is obtained by rounding.
[0282] Applying rounding before summation reduces computational workload and eliminates the effect of minimal products of state variable values and associated weighted values. Therefore, reliability is increased.
[0283] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value s according to the following formula. k :
[0284]
[0285] Among them, s k 2 represents the state variable values, where N is the number of state variable values considered. This is the rounding down operator, where d k i It is a weighted value associated with the values of state variables (e.g., a weighting factor that controls the influence of individual state variable values on the combined state variable value) (where d k i Preferably, it is the integer value performance of von 2, and wherein two different d k i The ratio between them is preferably an integer value of 2 (performance) [where the two different d k i The ratio between them is preferably greater than or equal to 8).
[0286] It has been found that this derivation of the values of combined state variables is particularly advantageous. This also refers to the explanation above of the corresponding concepts used to determine the values of combined state variables.
[0287] In a preferred embodiment, the arithmetic encoder is configured to determine the combined state variable value according to the following formula.
[0288]
[0289] Where z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values, where A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) Having greater than The range of values; that is, Quantized to
[0290] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or set to zero; where offset, and These are predefined parameters (examples have been provided above).
[0291] It has been found that such updates to state variable values are particularly advantageous. This also refers to the explanation above regarding the concept used for updating state variables.
[0292] In a preferred embodiment, the arithmetic encoder is configured to derive by table lookup or by calculation.
[0293] The above explanation is used as a reference for this concept.
[0294] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0295]
[0296] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0297] The advantages of this concept for updating the values of one or more state variables are explained above.
[0298] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0299]
[0300] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0301] The advantages of this concept for updating the values of one or more state variables are explained above.
[0302] In a preferred embodiment, the arithmetic encoder is configured to determine one or more updated state variable values according to the following formula.
[0303]
[0304] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0305] The advantages of this concept for updating the values of one or more state variables are explained above.
[0306] In a preferred embodiment, the arithmetic encoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0307] The logical right shift of the encoded interval size information is computationally efficient.
[0308] In a preferred embodiment, the arithmetic encoder is configured to... This is used to quantize the size information R of the encoded interval, where u, v, and w are parameters.
[0309] The advantages of this quantization of the encoding interval size information are discussed above.
[0310] In a preferred embodiment of this arithmetic encoder, the entries in the one-dimensional lookup table are updated according to a state variable value or its scaled and / or rounded version. It increases and then decreases monotonically.
[0311] The advantages of this structure for one-dimensional lookup tables are discussed above.
[0312] In a preferred embodiment of this arithmetic encoder, a state variable value or its scaled and / or rounded version is used. The range of values has different intervals of equal size.
[0313] The advantages of this concept are discussed above.
[0314] In a preferred embodiment of this arithmetic encoder, the entries in the one-dimensional lookup table are updated according to a state variable value or its scaled and / or rounded version. The increase is accompanied by a monotonically decreasing rate.
[0315] The advantages of this concept are discussed above.
[0316] The following will describe the concept for arithmetic decoding, which corresponds to the concept for arithmetic encoding described above. Therefore, the same interpretation applies, and optionally, the same details described above may be used. However, it should be noted that the arithmetic encoder corresponds to the arithmetic decoder. Furthermore, previously encoded symbol values generally correspond to previously decoded symbol values, and symbol values to be encoded may generally correspond to previously decoded symbol values (or, correspond to symbol values to be decoded). However, regarding the correspondence of features, reference is also made to a comparison of the corresponding claims defining the related (or, corresponding) concepts.
[0317] An arithmetic decoder for decoding multiple symbols having symbolic values (e.g., binary values) is created according to embodiments of the present invention. The arithmetic decoder is configured to be based on multiple state variable values (s... i k (For example, associated with a given context model, indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The multiple state variable values represent statistics (e.g., estimates of the probability that one or more symbols to be decoded include certain symbol values) of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic decoder is configured to map the first state variable values (s) using a lookup table (LUT1). k 1) or its scaled and / or rounded version And use a lookup table (LUT1) to map the values of the second state variable (s) k 2) or its scaled and / or rounded version In order to obtain the interval size information (e.g., p) that describes the interval size used for arithmetic decoding of one or more symbols to be decoded. k or R*p k ).
[0318] In a preferred embodiment, the arithmetic decoder is configured to use a lookup table to retrieve the value of the first state variable or its scaled and / or rounded version. Mapped to the first probability value (p) k1) above, and wherein the arithmetic decoder is configured to use a lookup table to retrieve the value of the second state variable or its scaled and / or rounded version. Mapped to the second probability value (p) k 2 The arithmetic decoder is configured to use a first probability value and a second probability value to obtain a combined probability value (pk) (e.g., using a weighted sum or a weighted average).
[0319] In a preferred embodiment, the arithmetic decoder is configured to change the state variable value in a first direction (e.g., to become more positive) if the decoded symbol takes a first value (e.g., "code"), and to change the state variable value in a second direction (e.g., to become more negative) if the decoded symbol takes a second value different from the first value (e.g., "same") (e.g., making the state variable value both positive and negative), wherein the arithmetic decoder is configured to depend on the absolute value of each state variable value (if s k i >0, then s k i Otherwise it is -s k i (For example, depending on the scaled and rounded version of the absolute value of the state variable) to determine the entries in the lookup table to be evaluated.
[0320] In a preferred embodiment, the arithmetic decoder is configured to, if the first state variable value takes a first sign (e.g., a positive sign), then set the first probability value (p) to... k 1) Set to a value provided by the lookup table (e.g., for Furthermore, the arithmetic decoder is configured to, if the value of the first state variable takes a second sign (e.g., a negative sign), then set the first probability value (p) to... k 1) Set to the value obtained by subtracting the value provided by the lookup table from a predetermined value (e.g., 1) (e.g., for
[0321] In a preferred embodiment, the arithmetic decoder is configured to determine two or more probability values p according to the following formula. k i :
[0322]
[0323] Wherein, LUT1 is a lookup table containing probability values; where, It is the round-down operator; where s k i It is the value of the i-th state variable; and among them, a k iIt is a weighted value associated with the value of the i-th state variable (e.g., a weighted value that makes the range of numbers for the i-th state variable applicable to the number of entries in the lookup table).
[0324] In a preferred embodiment, the arithmetic decoder is configured to determine two or more probability values p according to the following formula. k i :
[0325]
[0326] Wherein, LUT1 is a lookup table containing probability values; where, It is the round-down operator; where s k i It is the value of the i-th state variable; and among them, a k i It is a weighted value associated with the value of the i-th state variable (e.g., a weighted value that makes the range of numbers for the i-th state variable applicable to the number of entries in the lookup table).
[0327] In a preferred embodiment, the arithmetic decoder is configured to base a plurality of probability values p on the following formula. k i Obtain the combination probability value p k :
[0328]
[0329] Where N is the number of probability values considered (and can be equal to the number of state variable values considered); and where b k i It is a weighted value (e.g., a weighting factor that controls the influence of the values of individual state variables on the combined probability value) [where b k i Preferably, it is the integer value performance of von 2, and wherein two different b k i The ratio between them is preferably an integer value of 2 (performance).
[0330] In a preferred embodiment, the arithmetic decoder is configured to use a two-dimensional lookup table to convert the value of the first state variable or its scaled and / or rounded version. Mapped to the first interval width value (R*p) k 1) The entries of the two-dimensional lookup table are addressed based on the value of the first state variable and on the encoding interval size information (e.g., R) that describes the size of the encoding interval of the arithmetic decoding prior to the decoding of the symbol.
[0331] Specifically, the arithmetic decoder is configured to use a two-dimensional lookup table to retrieve the value of the second state variable or its scaled and / or rounded version. Mapped to the second interval width value (R*p) k 2) The entries in the two-dimensional lookup table are addressed based on the value of the second state variable and on encoding interval size information (e.g., R) that describes the size of the arithmetic decoding encoding interval prior to the decoding of the symbol. The arithmetic decoder is configured to obtain a combined sub-interval width value using the first sub-interval width value and the second sub-interval width value (e.g., using a weighted sum or a weighted average).
[0332] In a preferred embodiment of the arithmetic decoder, the two-dimensional lookup table can be represented as a binary product of the following two: a first one-dimensional vector (forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include the values of a first state variable and the values of a second state variable or their scaled and / or rounded versions. The probability values of different value intervals in the range; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0333] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on the base lookup table (Base TabLPS), wherein the first set of elements (or blocks; e.g., "upper half") of the two-dimensional lookup table are the same as or rounded versions of the elements of the base lookup table, and wherein the second set of elements (or blocks; e.g., "lower half") of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0334] In a preferred embodiment of the arithmetic decoder, the second set of elements of the two-dimensional lookup table is a right-shifted version of the elements of the basic lookup table.
[0335] In a preferred embodiment of this arithmetic decoder, the probability index (Qp2(p)) LPS (i) Determine whether to evaluate the elements of the first set of elements in a two-dimensional lookup table or the elements of the second set of elements in a two-dimensional lookup table, where the probability index (e.g., by quantizing probability values (e.g., p)) LPS The first range (e.g., between 0 and μ-1) obtained is associated with the elements of the first set of elements, and wherein the probability index (e.g., by using a quantization function Qp2(.) to quantize the probability value (e.g., p) LPS The second range (e.g., greater than or equal to μ) obtained is associated with the elements of the second group of elements.
[0336] 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., μ; where the size value describes, for example, the expansion of the base lookup table in the first direction) and the interval size index (e.g., which can be obtained based on the interval size information R, for example using the quantization operation Qr2(.)(e.g., j);) determine which element of the base lookup table is used to obtain the element of the two-dimensional lookup table.
[0337] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements of the two-dimensional lookup table (RangTabLPS) according to the following formula:
[0338]
[0339] Where BaseTabLPS is a basic lookup table of size μ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., describing the size of the current encoding interval); where % is the division residual operation; where / is the division operation; and where Scal(x, y) is the scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0340] In a preferred embodiment of the arithmetic decoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) coding interval size, and wherein scaling is used to derive elements of a two-dimensional lookup table from the probability table for probability values not in the set of multiple probability values and / or for coding interval sizes different from the given coding interval size.
[0341] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table are obtained by a first scaling (multiplication) of selected elements (probTabLPS[i%μ]) of the probability table, which depends on the size of the encoding interval (R), and a second scaling, which depends on the result of the first scaling, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table).
[0342] In a preferred embodiment of the arithmetic decoder, the division residual (i%μ) of the division between the probability index (e.g., i; e.g., representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor used in the second scaling. And / or where the size of the encoding interval determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0343] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0344]
[0345] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation; probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the value of I is usually greater than μ); R is the interval size (or the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0346] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table are obtained by a first (multiplicative) scaling of the selected elements (probTabLPS[i%μ]) of the probability table, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table). The elements are obtained by a second scaling, which depends on the result of the first scaling, which depends on the size (R) of the encoding interval.
[0347] In a preferred embodiment of this arithmetic decoder, the division residual of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value describes, for example, an extension of the probability table) is... Determine which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between probability index (i) and the first size value is... Determine the scaling factor used in the first scaling. And / or wherein the size of the encoding interval (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0348] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0349]
[0350] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0351] In a preferred embodiment, the arithmetic decoder is configured to: base its value on a first state variable and a second state variable, or a scaled and / or rounded version thereof. Calculate the width of the first subinterval and the width of the second subinterval (R*p) respectively. k The calculation is performed by using its entries, which include scaled and / or rounded versions of the first and second state variable values or their respective values. A one-dimensional lookup table (LUT4) of the probability values of different intervals in the range of the first state variable value and the second state variable value (s) k (or its scaled and / or rounded version) Mapping to a first probability value and a second probability value, and quantizing the encoding interval size information (e.g., R) describing the size of the encoding interval of the arithmetic code preceding the encoded symbol to a quantization level; determining, on the one hand, the product between the first probability value and the second probability value and the quantization level (by looking up a pre-computed product or by multiplication); and using the first sub-interval width value and the second sub-interval width value to obtain a combined sub-interval width value (e.g., using a weighted sum or using a weighted average).
[0352] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0353] In a preferred embodiment, the arithmetic decoder is configured to... This is used to quantize the encoding interval size information R, where u, v, and w are parameters.
[0354] In a preferred embodiment of this arithmetic decoder, the entries of the one-dimensional lookup table are scaled and / or rounded according to the values of the first and second state variables or their scaled and / or rounded versions. It increases and then decreases monotonically.
[0355] In a preferred embodiment of this arithmetic decoder, the first state variable value and the second state variable value, or their scaled and / or rounded versions, are used. The range of values has different intervals of equal size.
[0356] In a preferred embodiment of this arithmetic decoder, the entries of the one-dimensional lookup table are scaled and / or rounded according to the values of the first and second state variables or their scaled and / or rounded versions. The increase is accompanied by a monotonically decreasing rate.
[0357] An arithmetic decoder for decoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to be based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern and indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The multiple state variable values represent statistics (e.g., estimates of the probability that one or more symbols to be decoded include certain symbol values) of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the arithmetic decoder is configured to base its work on the multiple (individual) state variable values (s i kTo derive the combined state variable values (s) k (The combined variable values may, for example, be a weighted sum of state variable values), and wherein the arithmetic decoder is configured to use a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) that describes the interval size used for arithmetic decoding of one or more symbols to be decoded. k or R*p k ).
[0358] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of state variable values in order to obtain combined state variable values.
[0359] In a preferred embodiment, the arithmetic decoder is configured to determine the rounding value. The sum of these values is used to obtain the combined state variable values (s). k This rounding value is obtained by rounding the value of the state variable. Associated weighted values The product is obtained by rounding.
[0360] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value s according to the following formula. k :
[0361]
[0362] Among them, s k 2 represents the state variable values, where N is the number of state variable values considered. This is the round-down operator, where d k i It is a weighted value associated with the values of state variables (e.g., a weighting factor that controls the influence of individual state variable values on the combined state variable value) (where d k i Preferably, it is the integer value performance of von 2, and wherein two different d k i The ratio between them is preferably an integer value of 2 (performance) [where the two different d k i The ratio between them is preferably greater than or equal to 8).
[0363] In a preferred embodiment, the arithmetic decoder is configured to change the state variable value in a first direction (e.g., to become more positive) if the decoded symbol takes a first value (e.g., "code"), and to change the state variable value in a second direction (e.g., to become more negative) if the decoded symbol takes a second value different from the first value (e.g., "same") (e.g., making the state variable value both positive and negative), and wherein the arithmetic decoder is configured to base its state variable value on the absolute value of the combined state variable values (if s k i >0, then s k Otherwise it is -s k (For example, depending on the scaled and rounded versions of the absolute values of the combined state variables) to determine the entries in the lookup table to be evaluated.
[0364] In a preferred embodiment, the arithmetic decoder is configured to, if the combined state variable value takes a first sign (e.g., a positive sign), then assign the probability value (p) to the value of the state variable. k ) is set to a value provided by the lookup table (e.g., for Furthermore, the arithmetic decoder is configured to, if the combined state variable value takes a second sign (e.g., a negative sign), then assign the probability value (p) to... k The value is set to the value obtained by subtracting the value provided by the lookup table from a predetermined value (e.g., 1).
[0365] In a preferred embodiment, the arithmetic decoder is configured to determine the combination probability value p according to the following formula. k :
[0366]
[0367] Wherein, LUT2 is a lookup table containing probability values; where, It is the round-down operator; where s k It is the value of the combined variable; and among them, a k It is a weighted value associated with the combined state variable values (e.g., a weighted value that makes the range of numbers for the i-th state variable value applicable to the number of entries in the lookup table).
[0368] In a preferred embodiment, the arithmetic decoder is configured to determine the combination probability value p according to the following formula. k :
[0369]
[0370] Wherein, LUT2 is a lookup table containing probability values; where, It is the round-down operator; where s k It is the value of the combined variable; and among them, a kIt is a weighted value associated with the combined state variable values (e.g., a weighted value that makes the range of numbers for the i-th state variable value applicable to the number of entries in the lookup table).
[0371] In a preferred embodiment, the arithmetic decoder is configured to use a two-dimensional lookup table to combine state variable values or their scaled and / or rounded versions. Mapped to sub-interval width value (R*p) k On the ), the entries of the two-dimensional lookup table are addressed based on the combined state variable values and the encoding interval size information (e.g., R) that describes the size of the arithmetic decoding encoding interval prior to the decoding of the symbol.
[0372] In a preferred embodiment of the arithmetic decoder, the two-dimensional lookup table can be represented as a binary product of the following two: a first one-dimensional vector (LUT4[...]; forming a one-dimensional lookup table) and a second one-dimensional vector (Qr2(R)), wherein the entries of the first one-dimensional vector include combined state variable values or their scaled and / or rounded versions. The probability values of different value intervals in the range of values; the entries of the second one-dimensional vector include quantization levels used to encode interval size information.
[0373] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table (RangTabLPS) are defined based on the base lookup table (Base TabLPS), wherein the first set of elements (or blocks; e.g., "upper half") of the two-dimensional lookup table are the same as or rounded versions of the elements of the base lookup table, and wherein the second set of elements (or blocks; e.g., "lower half") of the two-dimensional lookup table are scaled and rounded versions of the elements of the base lookup table.
[0374] In a preferred embodiment of the arithmetic decoder, the second set of elements of the two-dimensional lookup table is a right-shifted version of the elements of the basic lookup table.
[0375] In a preferred embodiment of this arithmetic decoder, the probability index (Qp2(p)) LPS (i) Determine whether to evaluate the elements of the first set of elements in a two-dimensional lookup table or the elements of the second set of elements in a two-dimensional lookup table, where the probability index (e.g., by quantizing probability values (e.g., p)) LPS The first range (e.g., between 0 and μ-1) obtained is associated with the elements of the first set of elements, and wherein the probability index (e.g., by using a quantization function Qp2(.) to quantize the probability value (e.g., p) LPS The second range (e.g., greater than or equal to μ) obtained is associated with the elements of the second group of elements.
[0376] 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., μ; where the size value describes, for example, the expansion of the base lookup table in the first direction) and the interval size index (e.g., which can be obtained based on the interval size information R, for example using the quantization operation Qr2(.)(e.g., j);) determine which element of the base lookup table is used to obtain the element of the two-dimensional lookup table.
[0377] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements of the two-dimensional lookup table (RangTabLPS) according to the following formula:
[0378]
[0379] Where BaseTabLPS is a basic lookup table of size μ; where i is the table index associated with probability information; where j is the table index associated with interval size information (e.g., describing the size of the current encoding interval); where % is the division residual operation; where / is the division operation; and where Scal(x, y) is the scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0380] In a preferred embodiment of the arithmetic decoder, the elements of a two-dimensional lookup table (RangTabLPS) are defined based on a probability table (probTabLPS), wherein the probability table describes a set of multiple probability values (e.g., represented by index i) and an interval size for a given (reference) coding interval size, and wherein scaling is used to derive elements of a two-dimensional lookup table from the probability table for probability values not in the set of multiple probability values and / or for coding interval sizes different from the given coding interval size.
[0381] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table are obtained by a first scaling (multiplication) of selected elements (probTabLPS[i%μ]) of the probability table, which depends on the size of the encoding interval (R), and a second scaling, which depends on the result of the first scaling, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table).
[0382] In a preferred embodiment of the arithmetic decoder, the division residual (i%μ) of the division between the probability index (e.g., i; e.g., representing the current probability value) and a first size value (e.g., μ; where the size value, for example, describes an expansion of the probability table) determines which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between the probability index (i) and the first size value Determine the scaling factor used in the second scaling. And / or where the size of the encoding interval determines the multiplicative scaling factor (Qr2(R)) of the first scaling.
[0383] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0384]
[0385] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation; probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the value of I is usually greater than μ); R is the interval size (or the current encoded interval size); Qr2(R) is a scaling factor dependent on R; Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0386] In a preferred embodiment of the arithmetic decoder, the elements of the two-dimensional lookup table are obtained by a first (multiplicative) scaling of the selected elements (probTabLPS[i%μ]) of the probability table, which depends on whether the element associated with the current probability value (indicated by index i) is included in the set of probability values (e.g., depending on whether the current probability value is within the range of probability values covered by the probability table). The elements are obtained by a second scaling, which depends on the result of the first scaling, which depends on the size (R) of the encoding interval.
[0387] In a preferred embodiment of this arithmetic decoder, the division residual of the division between the probability index (e.g., i; for example, representing the current probability value) and a first size value (e.g., μ; where the size value describes, for example, an extension of the probability table) is... Determine which element of the probability table is scaled in the first scaling; and / or where the integer division result of the division between probability index (i) and the first size value is... Determine the scaling factor used in the first scaling. ); and / or wherein the size of the encoding interval (R) determines the multiplicative scaling factor (Qr2(R)) of the second scaling.
[0388] In a preferred embodiment, the arithmetic decoder is configured to obtain the elements RangeTabLPS[i][j] of the two-dimensional lookup table according to the following formula:
[0389]
[0390] Where i is the table index associated with the probability information; j is the table index associated with the interval size information; % is the division residual operation; / is the division operation (e.g., providing an integer result); probTabLPS[] is the probability table; μ is the number of elements in the probability table (where the range of values for I is typically greater than μ); R is the interval size; Qr2(R) is a scaling factor dependent on R; and Scal(x, y) is a scaling function (e.g., defined as...). in It is a rounding down operation, where a is preferably a constant greater than or equal to 2, and where b is preferably a constant greater than or equal to 1, and where the scaling function is preferably implemented using a right bit shift operation, where y determines whether to perform a right shift of x and determines how many bits to shift to the right.
[0391] In a preferred embodiment, the arithmetic decoder is configured to: base its value on the combined variable or its scaled and / or rounded version. To calculate the sub-interval width value (R*pk), the calculation is performed by using entries that include a scaled and / or rounded version of the combined state variable values or their combined values. A one-dimensional lookup table (LUT4) of probability values for different intervals of the range of state variables will combine the state variable values (s) k (or its scaled and / or rounded version) Mapped to the combined probability value, and the coding interval size information (e.g., R) describing the size of the coding interval of the arithmetic code before the coded symbol is quantized to the quantization level; the product between the combined probability value and the quantization level is determined (either by looking up a pre-computed product or by multiplication).
[0392] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0393] In a preferred embodiment, the arithmetic decoder is configured to... This is used to quantize the encoded interval size information R, where u, v, and w are parameters.
[0394] In a preferred embodiment of this arithmetic decoder, the entries in the one-dimensional lookup table are updated according to the combined state variable values or their scaled and / or rounded versions. It increases and then decreases monotonically.
[0395] In a preferred embodiment of this arithmetic decoder, the state variable values or their scaled and / or rounded versions are used for combining them. The range of values has different intervals of equal size.
[0396] In a preferred embodiment of this arithmetic decoder, the entries in the one-dimensional lookup table are updated according to the combined state variable values or their scaled and / or rounded versions. The increase is accompanied by a monotonically decreasing rate.
[0397] In a preferred embodiment of this arithmetic decoder, the lookup table defines an exponential decay (e.g., decreasing from 0.5) within a tolerance of + / -10% or + / -20%.
[0398] In a preferred embodiment, the arithmetic decoder is configured to update the state values of multiple variables according to the following formula.
[0399]
[0400] Where z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values, where A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) Having greater than The range of values; that is, Quantized to
[0401] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or set to zero; where offset, and These are predefined parameters (examples have been provided above).
[0402] In a preferred embodiment, the arithmetic decoder is configured to derive data either through table lookup or by computation.
[0403] An arithmetic decoder for decoding multiple symbols having symbol values (e.g., binary values) is created according to an embodiment of the present invention, wherein the arithmetic decoder is configured to determine one or more state variable values (s1). k s2 k The one or more state variable values represent statistics (e.g., an estimate of the probability that one or more symbols to be decoded include certain symbol values) of multiple previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., statistics with different adaptation time constants when multiple state variable values are determined), and wherein the arithmetic decoder is configured to base its work on one or more state variable values (s). i k (For example, associated with a given context pattern, indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants when multiple state variable values are determined), wherein the arithmetic decoder is configured to update the first state variable value (s) depending on the decoded symbol and using a lookup table (A). k 1) (For example, after decoding the decoded symbols).
[0404] In a preferred embodiment, the arithmetic decoder is configured to update the second state variable value (s) based on the decoded symbol and using the lookup table (A) (e.g., after decoding the decoded symbol). k 2).
[0405] In a preferred embodiment, the arithmetic decoder is configured to update the values of the first state variable and the second state variable using different adaptation time constants.
[0406] In a preferred embodiment, the arithmetic decoder is configured to selectively increase or decrease the value of the previous state variable using a lookup table, depending on whether the decoded symbol takes a first value or a second value different from the first value.
[0407] In a preferred embodiment, the arithmetic decoder is configured to increase the value of the previous state variable by a relatively large value when the previous state variable value is negative, compared to when the previous state variable value is positive when the decoded sign takes a first value; and wherein the arithmetic decoder is configured to decrease the value of the previous state variable by a relatively large value when the previous state variable value is positive, compared to when the previous state variable value is negative when the decoded sign takes a second value different from the first value (this is obtained, for example, through appropriate selection of a lookup table).
[0408] In a preferred embodiment, the arithmetic decoder is configured such that if the decoded symbol takes a first value, it depends on a predetermined (e.g., fixed) offset value (z) and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the first state variable; and the arithmetic decoder is configured to determine, if the decoded symbol takes a second value, the version of the first state variable value that depends on a predetermined (e.g., fixed) offset value (z) and is inverted (multiplied by -1) by the previously calculated value of the first state variable. Or a scaled and / or rounded version thereof (e.g., a negated version of the previously calculated first state variable value). The index of the entry in the lookup table evaluated when updating the value of the first state variable by summing the values of the first state variable.
[0409] In a preferred embodiment, the arithmetic decoder is configured such that if the decoded symbol takes a first value, it depends on a predetermined (e.g., fixed) offset value (z) and a previously calculated second state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table evaluated when updating the value of the second state variable; and the arithmetic decoder is configured to, if the decoded symbol takes a second value, depend on a predetermined (e.g., fixed) offset value (z) and the inverse (multiplied by -1) version of the previously calculated value of the second state variable. Or its scaled and / or rounded version (e.g., a negated version of the previously calculated second state variable value). The sum of these values determines the index of the entry in the lookup table evaluated when updating the value of the second state variable.
[0410] In a preferred embodiment, the arithmetic decoder is configured to apply a first scaling value (m) when determining the index of the entry in the lookup table evaluated when updating the value of the first state variable. k 1), based on the previously calculated first state variable value (s) k 1) Scaling is performed, wherein the arithmetic decoder is configured to apply a second scaling value (m) when determining the index of the entry of the lookup table evaluated when updating the value of the second state variable.k 2), to the previously calculated value of the second state variable (s) k 2) Scaling is performed, wherein the first scaling value is different from the second scaling value (and wherein the first scaling value and the second scaling value are preferably integers of 2, and wherein the ratio between the first scaling value and the second scaling value is preferably an integer of 2, wherein the first scaling value and the second scaling value preferably differ by a factor of at least 8).
[0411] In a preferred embodiment, the arithmetic decoder is configured to use a first scaling value (e.g., n) when updating the value of the first state variable. k 1) Scale the values returned by the evaluation through the lookup table.
[0412] The arithmetic decoder is configured to use a second scaling value (e.g., n) when updating the value of the second state variable. k 2) Scale the value returned by the evaluation through the lookup table, where the first scaling value is different from the second scaling value.
[0413] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0414]
[0415] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0416] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0417]
[0418] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0419] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0420]
[0421] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0422] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0423]
[0424] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0425] In a preferred embodiment of this arithmetic decoder, the entries for A decrease monotonically as the lookup table index increases.
[0426] In a preferred embodiment of this arithmetic decoder, A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) With large The range of values; that is, Quantized to
[0427] Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or set to zero; where offset, and These are predefined parameters (examples have been provided above).
[0428] In a preferred embodiment of the arithmetic decoder, the last entry in the lookup table (when the first state variable value extends to a predetermined range of maximum allowable values or when the first state variable value exceeds a predetermined threshold) is equal to zero.
[0429] In a preferred embodiment, the arithmetic decoder is configured to apply a limiting operation to update the state variable value so that the updated and limited state variable value remains within a predetermined range.
[0430] In a preferred embodiment, the arithmetic decoder is configured to apply the limiting operation according to the following formula.
[0431]
[0432] To update the value of the state variable, where, It is used for The maximum allowed value, and where, It is used for The minimum allowed value.
[0433] In a preferred embodiment, the arithmetic decoder is configured to apply different scaling values for different context models (e.g., such that at least one of the scaling values is different between two different context models).
[0434] In a preferred embodiment, the arithmetic decoder is configured to obtain interval size information as defined in one of the above embodiments.
[0435] An arithmetic decoder for decoding multiple symbols having symbol values (e.g., binary values) is created according to embodiments of the present invention, wherein the arithmetic decoder is configured to determine a state variable value (s). k The state variable value represents a statistical representation of multiple previously decoded symbol values, and the arithmetic decoder is configured to combine the state variable values or their scaled and / or rounded versions. To calculate the sub-interval width (R) for arithmetic decoding of the symbol value to be decoded. LPS The calculation is performed by using its entries to include combinations of state variable values or their scaled and / or rounded versions. A one-dimensional lookup table (probTabLPS[Qp2(...)]) represents the probability values of a state variable (s) across different intervals of its range. k (or its scaled and / or rounded version) Mapped to the combined probability value, and the encoding interval size information (e.g., R) that describes the size of the encoding interval for arithmetic encoding before arithmetic decoding of the symbol value to be encoded is quantized to a quantization level (Qr2(R)); the product between the probability value and the quantization level is determined (by a lookup of the pre-computed product or by multiplication), wherein the arithmetic decoder is configured to perform state variable value updates depending on the symbol value to be decoded (actually decoded).
[0436] In a preferred embodiment, the arithmetic decoder is configured to be based on 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, for statistics with different adaptive time constants) to derive as a state variable value (s k The combined state variable values (e.g., a weighted sum of state variable values) represent statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants.
[0437] In a preferred embodiment, the arithmetic decoder is configured to determine a weighted sum of state variable values in order to obtain combined state variable values.
[0438] In a preferred embodiment, the arithmetic decoder is configured to determine the rounding value. The sum of these values is used to obtain the combined state variable values (s). k This rounding value is obtained by rounding the value of the state variable. Associated weighted values The product is obtained by rounding.
[0439] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value s according to the following formula. k :
[0440]
[0441] Among them, s k 2 represents the state variable values, where N is the number of state variable values considered. This is the rounding down operator, where d k i It is a weighted value associated with the values of state variables (e.g., a weighting factor that controls the influence of individual state variable values on the combined state variable value) (where d k i Preferably, it is the integer value performance of von 2, and wherein two different d k i The ratio between them is preferably an integer value of 2 (performance) [where the two different d k i The ratio between them is preferably greater than or equal to 8).
[0442] In a preferred embodiment, the arithmetic decoder is configured to determine the combined state variable value according to the following formula.
[0443]
[0444] Where z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values, where A is Or, it may deviate from the equation solely by setting one or more extreme values of its independent variable to zero or by reducing the magnitude to avoid the updated... Deviating from the predetermined value range (for example, considering...) Having greater than The range of values; that is, Quantized to Above; for The extreme values, It is possible that the value of A might be modified from its unmodified state according to the above formula, thus deviating from its range; to avoid this situation, the entries corresponding to these extreme values can be reduced or set to zero; where offset, and These are predefined parameters (examples have been provided above).
[0445] In a preferred embodiment, the arithmetic decoder is configured to derive data either through table lookup or by computation.
[0446] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0447]
[0448] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0449] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0450]
[0451] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0452] In a preferred embodiment, the arithmetic decoder is configured to determine one or more updated state variable values according to the following formula.
[0453]
[0454] Where A is a lookup table (e.g., including integer values), and z is a predetermined (constant) offset value; where, It is one or more weighted values; where, It is one or more weighted values.
[0455] In a preferred embodiment, the arithmetic decoder is configured to perform quantization of the encoded interval size information by applying a logical right shift to the encoded interval size information.
[0456] In a preferred embodiment, the arithmetic decoder is configured to... This is used to quantize the encoding interval size information R, where u, v, and w are parameters.
[0457] In a preferred embodiment of this arithmetic decoder, the entries in the one-dimensional lookup table are updated with a state variable value or its scaled and / or rounded version. It increases and then decreases monotonically.
[0458] In a preferred embodiment of this arithmetic decoder, a state variable value or its scaled and / or rounded version is used. The range of values has different intervals of equal size.
[0459] In a preferred embodiment of this arithmetic decoder, the entries in the one-dimensional lookup table are updated with a state variable value or its scaled and / or rounded version. The increase is accompanied by a monotonically decreasing rate.
[0460] According to an embodiment of the present invention, a video encoder is created, wherein the video encoder is configured to encode a plurality of video frames, wherein the video encoder includes an arithmetic encoder according to one of the above embodiments, the arithmetic encoder providing an encoded binary sequence based on a sequence of binary values representing video content.
[0461] It should be noted that the arithmetic encoder discussed in this paper is well-suited for use within a video encoder. In this case, the symbols to be encoded and / or previously encoded symbols can be symbols of the video bitstream. For example, the symbols to be encoded and / or previously encoded symbols can represent bits of auxiliary or control information and / or bits of transform coefficients representing the encoding of video content. In other words, the symbols to be encoded and / or previously encoded symbols can represent any of the information included in the bitstream used to represent video content. However, it should be noted that state variable values can be determined individually for different “contexts” (i.e., for different types of information). For example, bits associated only with a given type of information (e.g., a specific type of auxiliary information) can contribute to a given state variable value or a given set of state variable values for obtaining a given combination of state variable values. Therefore, interval size information can also be derived individually for different contexts (i.e., for the encoding of symbol values associated with different types of information (e.g., auxiliary information)).
[0462] According to an embodiment of the present invention, a video decoder is created, wherein the video decoder is configured to decode a plurality of video frames, wherein the video decoder includes an arithmetic decoder (120; 220) according to one of the above embodiments, the arithmetic decoder being used to provide a decoded binary sequence (e.g., based on the decoded symbol value) based on an encoded representation (211) of a binary sequence.
[0463] Video decoders are based on the same considerations as video encoders. Therefore, the above explanation also applies, where the encoded symbols, or symbols to be encoded, correspond to the decoded symbols.
[0464] Furthermore, it should be noted that corresponding methods and computer programs have been created according to other embodiments of the present invention.
[0465] An embodiment of the present invention provides a method for encoding multiple symbols having symbol values (e.g., binary values), wherein the method includes encoding based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The multiple state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the method includes using a lookup table (LUT1) to map the first state variable values (s k 1) or its scaled and / or rounded version And a lookup table (LUT1) is used to map the values of the second state variable (s). k 2) or its scaled and / or rounded version In order to obtain the interval size information (e.g., p) which describes the interval size for the arithmetic encoding of one or more symbols to be encoded. k or R*p k ).
[0466] An embodiment of the present invention provides a method for encoding multiple symbols having symbol values (e.g., binary values), wherein the method includes encoding based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p kThe multiple state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants, wherein the method includes based on multiple (individual) state variable values (s i k To derive the combined state variable values (s) k (For example, it could be a weighted sum of state variable values), and wherein the method includes using a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) which describes the interval size for the arithmetic encoding of one or more symbols to be encoded. k or R*p k ).
[0467] An embodiment of the present invention provides a method for encoding a plurality of symbols having symbol values (e.g., binary values), wherein the method includes determining one or more state variable values (s1). k s2 k The one or more state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants in the case of multiple state variable values), and wherein the method includes based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The one or more state variable values represent statistics of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants in the case of multiple state variable values), wherein the method includes updating the first state variable value (s) based on the symbol to be encoded and using a lookup table (A) (e.g., after encoding the symbol to be encoded). k 1).
[0468] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes decoding based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p kThe multiple state variable values represent statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants (e.g., estimates of the probability that one or more symbols to be decoded include certain symbol values), wherein the method includes using a lookup table (LUT1) to map the first state variable values (s k 1) or its scaled and / or rounded version And a lookup table (LUT1) is used to map the values of the second state variable (s). k 2) or its scaled and / or rounded version In order to obtain the interval size information (e.g., p) that describes the interval size used for arithmetic decoding of one or more symbols to be decoded. k or R*p k ).
[0469] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes decoding based on multiple state variable values (s i k (These multiple state variable values, for example, are associated with a given context pattern indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The multiple state variable values represent statistics based on multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants (e.g., estimates of the probability that one or more symbols to be decoded include certain symbol values), wherein the method includes a statistical approach based on multiple (individual) state variable values (s i k To derive the combined state variable values (s) k (For example, it could be a weighted sum of state variable values), and wherein the method includes using a lookup table to map the combined state variable values (s k (or its scaled and / or rounded version) In order to obtain the interval size information (e.g., p) that describes the interval size used for arithmetic decoding of one or more symbols to be decoded. k or R*p k ).
[0470] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes determining one or more state variable values (s k 1,s k2) The one or more state variable values represent statistics (e.g., an estimate of the probability that one or more symbols to be decoded include certain symbol values) of multiple previously decoded symbol values (e.g., a sequence of binary values 0 and 1) (e.g., statistics for different adaptation time constants when multiple state variable values are determined), and wherein the method includes basing the results on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent statistics of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) (e.g., statistics with different adaptation time constants when multiple state variable values are determined), wherein the method includes updating the first state variable value (s) based on the decoded symbol and using a lookup table (A). k 1).
[0471] An embodiment of the present invention provides a method executed by an encoder and a decoder according to one of the above embodiments.
[0472] According to embodiments of the present invention, a computer program is created that executes the method according to one of the above embodiments when the computer program is run on a computer.
[0473] An embodiment of the present invention provides a method for encoding a plurality of symbols having symbol values (e.g., binary values), wherein the method includes encoding based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for the arithmetic encoding of one or more symbol values to be encoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a statistical representation of multiple previously encoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants; wherein the method includes using a basic lookup table (BaseTabLPS) to determine the interval size value (R). LPS ), (the size of the basic lookup table is less than the number of possible probability indices i in terms of probability indexes), wherein the method includes determining the interval size value (R). LPS ), such that if the probability index (i) obtained based on one or more state variable values (e.g., i = Qp(p LPSIf the probability index is within a first range (e.g., less than μ), then the determined interval size value is the same as an element of the base lookup table or a rounded version of an element of the base lookup table, and such that if the probability index is within a second range (e.g., greater than or equal to μ), then the determined interval size value is obtained by scaling and rounding the elements of the base lookup table; and wherein the method includes using the interval size value (R) LPS ) to perform the arithmetic encoding of one or more symbols.
[0474] An embodiment of the present invention provides a method for encoding a plurality of symbols having symbol values (e.g., binary values), wherein the method includes encoding based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for the arithmetic encoding of one or more symbol values to be encoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a plurality of previously encoded symbol values (e.g., sequences of binary values 0 and 1 with different adaptation time constants); wherein the method includes determining an interval size value (R) using a probability table (Prob TabLPS) based on (current) probability values derived from the one or more state variable values and based on the (current) encoded interval size (R). LPS ), (the size of the probability table is less than the number of possible probability indices i in terms of probability indices), wherein the probability table describes a set of multiple probability values (e.g., probability indices between 0 and μ-1) and a range size (range size value) for a (single) given (reference) coding range size, and wherein the method includes scaling the elements of the probability table (Prob_TabLPS) (e.g., elements selected depending on the current probability value) to obtain the range size value [R] in cases where the current probability value is not among the set of multiple probability values (e.g., the probability index associated with the current probability value is greater than or equal to μ) and / or in cases where the current coding range size (R) is different from the given coding range size. LPS ); and wherein the method includes using the interval size value (R) LPS ) to perform the arithmetic encoding of one or more symbols.
[0475] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes decoding based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for arithmetic decoding of one or more symbol values to be decoded. LPSThe one or more state variable values represent (e.g., sequences of binary values 0 and 1) a statistical representation of multiple previously decoded symbol values (e.g., sequences of binary values 0 and 1) with different adaptation time constants; wherein the method includes using a basic lookup table (BaseTabLPS) to determine the interval size value (R). LPS ), (the size of the basic lookup table is less than the number of possible probability indices i in terms of probability indexes), wherein the method includes determining the interval size value (R). LPS ), such that if the probability index (i) obtained based on one or more state variable values (e.g., i = Qp(p LPS If the probability index is within a first range (e.g., less than μ), the determined interval size value is the same as an element of the base lookup table or a rounded version of an element of the base lookup table, and such that if the probability index is within a second range (e.g., greater than or equal to μ), the determined interval size value is obtained by scaling and rounding the elements of the base lookup table; and wherein the method includes using the interval size value (RL) PS ) to perform arithmetic decoding of one or more symbols.
[0476] An embodiment of the present invention provides a method for decoding multiple symbols having symbol values (e.g., binary values), wherein the method includes decoding based on one or more state variable values (s i k (For example, associated with a given context pattern, indicated by index k) to derive the interval size value (R) for arithmetic decoding of one or more symbol values to be decoded. LPS The one or more state variable values represent (e.g., sequences of binary values 0 and 1) a plurality of previously decoded symbol values (e.g., sequences of binary values 0 and 1 with different adaptation time constants); wherein the method includes determining the interval size value (R) using a probability table (Prob TabLPS) based on (current) probability values derived from the one or more state variable values and based on the (current) encoded interval size (R). LPS ), (the size of the probability table is less than the number of possible probability indices i in terms of probability indices), wherein the probability table describes a set of multiple probability values (e.g., probability indices between 0 and μ-1) and a range size (range size value) for a (single) given (reference) coding range size, and wherein the method includes scaling the elements of the probability table (Prob_TabLPS) (e.g., elements selected depending on the current probability value) to obtain the range size value (R) in cases where the current probability value is not among the set of multiple probability values (e.g., the probability index associated with the current probability value is greater than or equal to μ) and / or in cases where the current coding range size (R) differs from the given coding range size. LPS ); and wherein the method includes using an interval size value (R)LPS ) to perform arithmetic decoding of one or more symbols.
[0477] According to embodiments of the present invention, a computer program is created that executes the method according to one of the above embodiments when the computer program is run on a computer.
[0478] The method described above is based on the same considerations as the apparatus described above. However, it should be noted that the method may optionally be supplemented by any features, functions, and details described herein (also concerning the apparatus). The method may optionally be supplemented by these features, functions, and details, individually or in combination. The same applies to computer programs. Attached Figure Description
[0479] Embodiments of the invention will then be described with reference to the accompanying drawings, in which:
[0480] Figure 1 A schematic block diagram of an apparatus for predictively encoding images in a data stream, according to an embodiment of the present invention, is shown.
[0481] Figure 2 A schematic block diagram of a decoder according to an embodiment of the present invention is shown;
[0482] Figure 3 A schematic representation of the relationship between the reconstructed signal and the combination of the prediction residual and the prediction signal is shown;
[0483] Figure 4 A schematic block diagram of an arithmetic encoder according to an embodiment of the present invention is shown;
[0484] Figure 5 A schematic block diagram of an arithmetic decoder according to an embodiment of the present invention is shown;
[0485] Figure 6 A schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0486] Figure 7 A schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0487] Figure 8 A schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0488] Figure 9 A schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0489] Figure 10a and Figure 10bA schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0490] Figure 11 A schematic representation of a concept for determining interval size information according to an embodiment of the present invention is shown;
[0491] Figure 12 A schematic representation of a concept for determining one or more updated state variables according to an embodiment of the present invention is shown;
[0492] Figure 13 A schematic representation of a concept for determining interval size values according to an embodiment of the present invention is shown;
[0493] Figure 14 A schematic representation of a concept for determining interval size values according to an embodiment of the present invention is shown;
[0494] Figure 14 A schematic representation of a concept for determining interval size values according to an embodiment of the present invention is shown;
[0495] Figure 15 A schematic representation of a concept for determining interval size values according to an embodiment of the present invention is shown;
[0496] Figure 16 A schematic representation of a video decoder according to an embodiment of the present invention is shown; and
[0497] Figure 17 A schematic representation of a video decoder according to an embodiment of the present invention is shown. Detailed Implementation
[0498] 1. According to Figure 1 encoder
[0499] The following description of the accompanying figures illustrates the encoder for a block-based predictive codec. Figure 1 ) and decoder ( Figure 2 The description begins with an example of a block-based predictive codec used to encode images of a video to form an coded frame in which embodiments of the invention can be constructed. Regarding... Figures 1 to 3 The various encoders and decoders are described. Below, embodiments of the concepts of the invention are presented, along with descriptions of how such concepts can be constructed respectively. Figure 1 and Figure 2 The descriptions in the encoder and decoder, although through subsequent Figure 4 The embodiments described below can also be used to form, and are not based on, the following. Figure 1 and Figure 2 The encoder and decoder operate on the lower-level encoding frame.
[0500] Embodiments of the present invention may include, as about Figure 1 and Figure 2 The video encoder and video decoder described herein. Furthermore, any of the concepts disclosed herein can be found, for example, in references... Figure 1 and Figure 2 Used in the described entropy encoder 34 or entropy decoder 50.
[0501] Figure 1 An apparatus is shown for predictively encoding image 12 into data stream 14 using transform-based residual coding, as exemplarily demonstrated. Reference numeral 10 is used to indicate the apparatus or encoder. Figure 2 The corresponding decoder 20 is shown, i.e., the device 20 configured to also use transform-based residual decoding to predictively decode the image 12′ from the data stream 14, wherein the apostrophe has been used to indicate that the image 12′ reconstructed by the decoder 20 deviates from the image 12 originally encoded by the device 10 in terms of the coding loss introduced by the quantization of the predictive residual signal. Figure 1 and Figure 2 Transform-based prediction residual coding is used as an example, although embodiments of this application are not limited to such prediction residual coding. Regarding... Figure 1 and Figure 2 The same applies to other details described, as will be outlined below.
[0502] Encoder 10 is configured to perform a spatial-to-spectral transformation on the prediction residual signal and encode the resulting prediction residual signal into data stream 14. Similarly, decoder 20 is configured to decode the prediction residual signal from data stream 14 and perform a spectral-to-spatial transformation on the resulting prediction residual signal.
[0503] Internally, encoder 10 may include a prediction residual signal former 22 that generates a prediction residual 24 to measure the deviation of the prediction signal 26 from the initial signal (i.e., from image 12). The prediction residual signal former 22 may, for example, be a subtractor that subtracts the prediction signal from the initial signal (i.e., from image 12). Encoder 10 further includes a transformer 28 that performs a spatial-to-spectral transformation on the prediction residual signal 24 to obtain a spectral domain prediction residual signal 24′, which is then quantized by a quantizer 32 also included by encoder 10. The thus quantized prediction residual signal 24″ is encoded into bitstream 14. For this purpose, encoder 10 may optionally include an entropy encoder 34 that entropy-encodes the transformed and quantized prediction residual signal into data stream 14. Prediction signal 26 is generated by prediction stage 36 of encoder 10 based on the prediction residual signal 24″ encoded into and decodeable from data stream 14. For this purpose, as... Figure 1 As shown, prediction stage 36 may internally include: a dequantizer 38 that dequantizes the prediction residual signal 24″ to obtain a spectral domain prediction residual signal 24″′, which corresponds to signal 24′ except for the quantization loss; and an inverse transformer 40 following the dequantizer that performs an inverse transform, i.e., a spectral-to-spatial transform, on the latter prediction residual signal 24″′ to obtain a prediction residual signal 24″″ that corresponds to the original prediction residual signal 24 except for the quantization loss. Combiner 42 of prediction stage 36 then recombines the prediction signal 26 and the prediction residual signal 24″″, such as by addition, to obtain a reconstructed signal 46, i.e., a reconstruction of the original signal 12. The reconstructed signal 46 may correspond to signal 12′. Prediction module 44 of prediction stage 36 then generates prediction signal 26 based on signal 46 by using, for example, spatial prediction (i.e., intra-frame image prediction) and / or temporal prediction (i.e., inter-frame image prediction).
[0504] 2. According to Figure 2 decoder
[0505] Similarly, as Figure 2 As shown, decoder 20 may internally consist of components corresponding to and interconnected with prediction stage 36 in a manner corresponding to prediction stage 36. Specifically, the entropy decoder 50 of decoder 20 may entropy decode the quantized spectral domain prediction residual signal 24″ from the data stream, after which the dequantizer 52, inverse transformer 54, combiner 56, and prediction module 58, interconnected and operating in the manner described above with respect to the modules of prediction stage 36, recover the reconstructed signal based on the prediction residual signal 24″, such that... Figure 2 As shown, the output of combiner 56 generates a reconstruction signal, i.e., picture 12'.
[0506] Although not specifically described above, it is readily apparent that encoder 10 can set some coding parameters, including, for example, prediction modes, motion parameters, etc., according to some optimization scheme (e.g., in a way that optimizes some rate and distortion correlation criteria (i.e., coding cost)). For example, encoder 10 and decoder 20 and corresponding modules 44 and 58 can respectively support different prediction modes, such as intra-frame coding mode and inter-frame coding mode. The granularity of the encoder and decoder switching between these prediction mode types can correspond to the subdivision of images 12 and 12′ into coding segments or coding blocks, respectively. Within these coding segment units, for example, the images can be subdivided into intra-frame coding blocks and inter-frame coding blocks. Intra-frame coding blocks are predicted based on the spatially encoded / decoded neighborhoods of the individual blocks, as outlined in more detail below. Several intra-coding modes, including directional or angular intra-coding modes, can exist. An intra-coding mode is selected for each intra-coded segment. Based on this mode, segments are filled by extrapolating neighborhood sample values along a direction specific to each directional intra-coding mode into the corresponding intra-coded segment. The intra-coding modes can also include, for example, one or more other modes, such as DC coding mode and / or planar intra-coding mode. According to DC coding mode, the prediction of each intra-coded block assigns DC values to all samples within each intra-coded segment. According to planar intra-coding mode, the prediction of each block is approximated or determined as the spatial distribution of sample values at sample locations in each intra-coded block, described by a two-dimensional linear function, where the slope and offset of the plane defined by the two-dimensional linear function are driven by neighboring samples. In contrast, inter-coded blocks can be predicted temporally, for example. For inter-frame coded blocks, motion vectors can be signaled within the data stream. These motion vectors indicate the spatial displacement of portions of previously coded images of the video to which image 12 belongs. These previously coded / decoded images are sampled at the data stream to obtain prediction signals for each inter-frame coded block. This means that, in addition to the residual signal encoding included in data stream 14 (e.g., the entropy-coded transform coefficient levels representing the quantization spectral domain prediction residual signal 24′'), data stream 14 may have been encoded with coding mode parameters for assigning coding modes to various blocks, prediction parameters for some blocks (e.g., motion parameters for inter-frame coded segments), and optionally, additional parameters (e.g., parameters for controlling and signaling the subdivision of images 12 and 12′ into segments, respectively). Decoder 20 uses these parameters to subdivide the images in the same manner as the encoder, to assign the same prediction modes to segments, and to perform the same predictions to produce the same prediction signals.
[0507] 3. According to Figure 3 Functionality Figure 3This illustrates the relationship between the reconstruction signal (i.e., the reconstructed image 12′) and the combination of the prediction residual signal 24″” and the prediction signal 26, which are signaled in data stream 14. As mentioned above, this combination can be additive. The prediction signal 26 is in Figure 3 The image region is described as being divided into intra-frame coded blocks indicated by illustrative shaded lines and inter-frame coded blocks indicated by illustrative non-shaded lines. This subdivision can be any subdivision, such as a conventional subdivision where the image region is divided into rows and columns of square or non-square blocks, or a multi-segment tree subdivision, such as a quarter-tree subdivision, where the image 12 from the root block is divided into multiple leaf blocks of different sizes. Figure 3 The text explains its mixing process. Figure 3 In the process, the image area is first subdivided into rows and columns of the root block, and then further subdivided into one or more leaf blocks according to the recursive multi-segmentation tree.
[0508] Furthermore, data stream 14 may have intra-coding modes in which intra-coding blocks 80 are encoded, assigning one of several supported intra-coding modes to the corresponding intra-coding block 80. For inter-coding blocks 82, data stream 14 may have one or more motion parameters encoded therein. Generally, inter-coding blocks 82 are not limited to temporal encoding. Alternatively, inter-coding blocks 82 may be any block that is predicted from previously encoded portions of the current picture 12 (e.g., a previously encoded picture of the video to which picture 12 belongs, or, in the case of an adjustable encoder and decoder, a picture of another view or a layered lower layer).
[0509] Figure 3 The prediction residual signal 24 in the image is also described as a subdivision of the image region into blocks 84. These blocks can be called transform blocks to distinguish them from coded blocks 80 and 82. In fact, Figure 3 The diagram illustrates two different subdivisions of the encoder 10 and decoder 20, using images 12 and 12' respectively: one subdivision dividing the blocks into coding blocks 80 and 82, and another subdivision dividing them into transform blocks 84. The two subdivisions may be identical, meaning each coding block 80 and 82 can simultaneously form transform block 84, but... Figure 3The following scenario illustrates a subdivision, for example, to transform block 84, which extends the subdivision to encoding blocks 80 and 82 such that any boundary between the two blocks of blocks 80 and 82 covers the boundary between the two blocks 84; or in other words, each block 80 and 82 coincides with one of the transform blocks 84, or with a cluster of transform blocks 84. However, subdivisions can also be determined or selected independently of each other, such that transform block 84 alternatively spans the block boundary between blocks 80 and 82. With regard to subdivision into transform block 84, a similar statement thus holds as with the statement made regarding subdivision into blocks 80 and 82, i.e., block 84 can be the result of a regular subdivision of an image region into blocks (with or without a configuration of rows and columns), the result of a recursive multi-segment tree subdivision of an image region, or a combination thereof, or any other category of subdivision. Incidentally, it should be noted that blocks 80, 82, and 84 are not limited to squares, rectangles, or any other shape.
[0510] Figure 3 This further illustrates that the combination of prediction signal 26 and prediction residual signal 24”” directly generates reconstructed signal 12′. However, it should be noted that more than one prediction signal 26 can be combined with prediction residual signal 24”” according to alternative embodiments to generate image 12′.
[0511] exist Figure 3 In this context, transform blocks 84 should have the following significance. Transformer 28 and inverse transformer 54 perform their transforms on a per-transform block basis 84. For example, many codecs use some kind of DST or DCT for all transform blocks 84. Some codecs allow skipping transforms, such that for some transform blocks 84, the prediction residual signal is directly encoded in the spatial domain. However, according to the following embodiment, encoder 10 and decoder 20 are configured to support several transforms. For example, the transforms supported by encoder 10 and decoder 20 may include:
[0512] oDCT-II (or DCT-III), where DCT stands for Discrete Cosine Transform
[0513] o DST-IV, where DST represents Discrete Sine Transform
[0514] ο DCT-IV
[0515] ο DST-VII
[0516] οIdentity Transformation (IT)
[0517] Naturally, while transformer 28 will support all forward versions of these transforms, decoder 20 or inverse transformer 54 will support their corresponding backward or inverse versions:
[0518] inverse DCT-II (or, inverse DCT-III)
[0519] οInverse DST—IV
[0520] οReverse DCT-IV
[0521] οReverse DST—VII
[0522] οIdentity Transformation (IT)
[0523] The following description provides further details regarding the transforms that can be supported by encoder 10 and decoder 20. In any case, it should be noted that the set of supported transforms may include only one transform, such as a spectrum-to-space or space-to-spectrum transform.
[0524] As shown above, Figures 1 to 3 As an example, the inventive concepts further described below can be implemented to form specific examples of encoders and decoders according to this application. In this regard, Figure 1 and Figure 2 The encoder and decoder can represent possible implementations of the video encoder and decoder described below, respectively. However, Figure 1 and Figure 2 This is merely an example. The encoder according to embodiments of this application can perform block-based encoding of image 12 using concepts outlined in more detail below, and in conjunction with, for example... Figure 1 The encoder differs from other encoders in that, for example, the encoder according to the embodiments of this application is not a video encoder but a still image encoder; the encoder according to the embodiments of this application does not support inter-frame prediction; or it is subdivided into blocks 80 to differ from other encoders. Figure 3 The manner illustrated in the example is used. Similarly, the decoder according to embodiments of this application can perform block-based decoding of image 12′ from data stream 14 using the encoding concepts further outlined below, but with, for example... Figure 2 The difference between the decoder 20 and the decoder according to the embodiments of this application may be that the decoder according to the embodiments of this application is not a video decoder but a still image decoder, that the decoder according to the embodiments of this application does not support intra-frame prediction, or that the decoder according to the embodiments of this application uses a different method than the one described above. Figure 3 The described method subdivides the image 12′ into blocks, and / or the decoder according to embodiments of this application derives the prediction residuals from the data stream 14, for example, in the spatial domain, rather than from the transform domain.
[0525] 4. According to Figure 4 Arithmetic encoder
[0526] Figure 4 A schematic block diagram of an arithmetic encoder according to an embodiment of the present invention is shown.
[0527] according to Figure 4 The arithmetic encoder 400 can be used, for example, in a video encoder. However, alternatively, the arithmetic encoder 400 can also be used in an audio encoder, an image encoder, an encoder for encoding the coefficients of a neural network, etc.
[0528] The arithmetic encoder 400 is configured to receive a symbol 410 to be encoded, wherein the symbol 410 to be encoded may be represented by a symbol value. Furthermore, the encoder 400 typically also receives context information 412, which may describe, for example, what type of information is represented by the symbol 410 to be encoded. For example, the context information 412 may be represented by a context index k, which may describe, for example, what type of auxiliary information the symbol 410 to be encoded describes or what type of transform coefficients the symbol 410 encodes.
[0529] In addition, the arithmetic encoder 400 is configured to provide a bit stream 420 that represents the symbol 410 to be encoded or a sequence of symbols 410 to be encoded.
[0530] The arithmetic encoder 400 includes an arithmetic encoding kernel or arithmetic encoder kernel 430, which receives symbols 410 to be encoded and provides a bitstream 420 based on the symbols to be encoded. The arithmetic encoding kernel or arithmetic encoder kernel 430 typically receives interval size information, which may, for example, indicate the size of the sub-interval (from the total encoding interval) to which a symbol (e.g., the smallest possible symbol) maps. Furthermore, the arithmetic encoding kernel or arithmetic encoder kernel also provides encoding interval size information 434, which describes the current encoding interval size (e.g., the total size of the encoding interval). It should be noted that the encoding interval size 434 may vary over time depending on the encoded symbols 410 (or more precisely, on the sequence of encoded symbols 410).
[0531] The size of the coding interval can be changed, for example, due to rescaling operations performed during arithmetic coding. For example, the arithmetic coding kernel can perform functionality as described in the High Efficiency Video Coding (HEVC) standard (H.265).
[0532] The arithmetic encoder 400 also includes an encoding interval size determiner or encoding interval size determiner 440. The encoding interval size determiner 440 receives the symbol 410 to be encoded, or at least one or more previously encoded symbols, and preferably (but not necessarily) also receives context information 412. Furthermore, the interval size determiner 440 receives encoding interval size information 434. The interval size determiner 440 provides interval size information 432 for use by the arithmetic encoding kernel 430 based on the encoding interval size information, the symbol 410 to be encoded (or, at least one or more previously encoded symbols), and the optional context information 412.
[0533] Regarding Figure 4 Regarding the functionality of the concept, it should be noted that the interval size determination 440 is used to update the interval size information 432 (continuously, e.g., for each new symbol to be encoded). In this update, statistics of previously encoded symbols are considered. Furthermore, the encoded interval size information 434 provided by the arithmetic encoding 430 is also considered, since the interval size information 432 should preferably be provided in an appropriate relationship with the encoded interval size information 434. In this context, the encoded interval size information 434 may, for example, represent the current size of the (total) encoded interval (which may be caused by periodically renormalized encoded intervals), while the interval size information 432 may, for example, describe the size of a portion within the entire (total) encoded interval associated with a particular symbol (e.g., the smallest possible symbol). Therefore, the interval size information is generally smaller than the encoded interval size information 434, because the encoded interval size information 434 represents the total size of the encoded interval, while the interval size information 434 represents the size of a portion of the encoded interval associated with a particular symbol. Therefore, the interval size information 432 is typically scaled along with the encoded interval size information 434 (wherein, the scaling may optionally include some degree of non-linear behavior to avoid situations where encoding will be very inefficient).
[0534] Furthermore, by determining the appropriate interval size information 432, taking into account the total size of the encoded interval (represented by the encoding interval size information 434) and the statistics of previously encoded symbols (as well as the context), arithmetic coding can be performed in an efficient manner, wherein taking into account the statistics of previously encoded symbols helps to improve coding efficiency.
[0535] However, it should be noted that, according to Figure 4 The arithmetic encoder 400 can be used in any signal encoder as disclosed herein (e.g., in a video encoder). Furthermore, it should be noted that, according to... Figure 4 The arithmetic encoder 400 may optionally be supplemented by any of the features, functionalities, and details described herein. Specifically, the interval size determination 440 may use any of the concepts disclosed herein, both individually and in combination.
[0536] In short, according to Figure 4 The arithmetic encoder 400 may optionally be supplemented individually or in combination by any of the features, functionalities and details disclosed herein.
[0537] 5. Arithmetic decoder according to Figure 5 claim 4
[0538] Figure 5 A schematic block diagram of an arithmetic decoder 500 according to an embodiment of the present invention is shown. The arithmetic decoder 500 is configured to receive a bitstream 510 (which may correspond to bitstream 420) and provide decoded symbols 520 (or, in a sequence of decoded symbols 520) based on the bitstream. Typically, the decoded symbols 520 may correspond to symbols 410 to be encoded. Typically, the arithmetic encoder 400 and the arithmetic decoder 500 can perform lossless encoding and decoding when combined, such that the symbols 410 encoded by the arithmetic encoder 400 provide a bitstream 420 that, when decoded by the arithmetic decoder 500, allows for “perfect” reconstruction, such that the decoded symbols 520 correspond to the encoded symbols 410.
[0539] The arithmetic decoder 500 includes an arithmetic decoding core or arithmetic decoder kernel 530 that receives a bitstream and provides decoded symbols 520 based on the bitstream. The arithmetic decoding core 530 typically provides encoded interval size information 532 that may substantially correspond to encoded interval size information 434, and receives interval size information 534 that may correspond to interval size information 432. The arithmetic decoder 500 also includes an encoded interval size determiner or encoded interval size determiner 540 configured to provide interval size information 534 used by the arithmetic decoding core 530 based on the encoded interval size information 532 and also based on one or more decoded symbols 520. Furthermore, the encoded interval size determiner 540 may optionally use context information 550, which may describe what type of information is represented by the currently considered decoded symbol 520. Therefore, the encoding interval size determination 540 can determine the interval size information 534 for multiple different “contexts” (i.e., for multiple different types of decoding information (or, different types of information to be decoded)).
[0540] The arithmetic decoding core 530 can, for example, determine which sub-interval within the total coding interval (whose size is described by coding interval size information) the value represented by the bitstream 510 falls into, and thus determine which symbol is represented by the bitstream. For example, the size of the sub-intervals of the total coding interval is described by interval size information 534. For example, interval size information 534 can describe the size of the sub-interval of the total coding interval associated with a specific symbol (e.g., the smallest possible symbol). Furthermore, it should be noted that the coding interval size (e.g., the size of the total coding interval) can change periodically (or even for each decoded symbol) due to renormalization.
[0541] In summary, arithmetic decoding 500 is used to provide decoded symbols 520 based on bitstream 510, wherein the history of previously decoded symbols (or more precisely, statistics of previously decoded symbols) is used to (dynamically) adjust the interval size associated with the symbol to be decoded (wherein the adjusted interval size is described by interval size information 534). Furthermore, it should be noted that interval size determination 540 can be substantially the same as, for example, interval size determination 440. And it should be noted that interval size determination 540 can include any functionality disclosed herein. Therefore, any concept used for determining interval size can be used in interval size determination 540.
[0542] It should be noted that the arithmetic decoder 500 described herein can be used in any of the decoders described herein (e.g., an audio decoder or a video decoder). However, the arithmetic decoder 500 can also be used to decode images or coefficients of neural networks.
[0543] In general, the arithmetic decoder 500 described herein may optionally be supplemented individually and in combination by any of the features, functionalities and details disclosed herein.
[0544] 6. The concept for determining interval size information according to Figure 6 claim 5
[0545] Figure 6 A schematic representation of a concept for determining interval size information is shown, which, for example, can be determined based on... Figure 4 Arithmetic encoder 400 or according to Figure 5 It is used in the arithmetic decoder 500. The concept 600, which can be implemented in the form of interval size determination or interval size determiner, can be used, for example, to implement interval size determination or interval size determiner 440, and / or can be used to implement interval size determination or interval size determiner 540.
[0546] The interval size determination 600 may, for example, receive one or more symbol values 610, which may correspond to a symbol 410 to be encoded, a previously encoded symbol, or one or more previously decoded symbols 520. Furthermore, the interval size determination 600 may optionally receive context information 612, which may, for example, take 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 interval size information 432 or may correspond to interval size information 534.
[0547] Considering the sign value 610 and optionally context information 612, interval size determination includes state variable updates 640, which provide one or more updated state variables 642 based on one or more previously determined state variables 644. State variable updates 640 may also consider one or more other parameters, which may be static or, for example, adaptable to various contexts depending on the context information. For example, state variable updates 640 may consider one or more weighting factors, i.e., and / or The state variable update 640 may optionally also consider an "offset" (e.g., z) and a lookup table (e.g., A). Furthermore, the state variable update 640 may optionally be initialized to an initial value in response to a signal indicating that state variable initialization should be performed. In the case of state variable initialization, the previously determined state variable value 644 may be ignored, and the "updated" state variable 642 may be set to an initial value, which may be predetermined, for example.
[0548] Furthermore, the interval size determination 600 includes an interval size determination kernel, which determines the interval size information 620 based on the updated state variable (or, the state variable value) 620. Additionally, the interval size determination kernel 650 may, for example, consider encoding interval size information 652, which may correspond to encoding interval size information 432 or encoding interval size information 532.
[0549] Therefore, the interval size determination kernel 650 can provide interval size information based on the encoded interval size information 652, which describes the total size of the encoded interval, and based on statistical information about previously encoded or previously decoded symbols, which describes the size of the sub-interval associated with a particular symbol, and the statistical information about the previously encoded or previously decoded symbols is represented by one or more update state variables 642.
[0550] However, it should be noted that the interval size determination 600 can be used in the arithmetic encoder and arithmetic decoder described herein. Furthermore, the interval size determination 600 can be supplemented by any of the features, functionalities, and details disclosed herein. Specifically, the state variable update can use any of the concepts disclosed herein. Additionally, the interval size determination kernel can also use any of the concepts disclosed herein.
[0551] It should be noted that any concept described herein for use in updating state variables may optionally be combined with any concept for use in determining the interval size kernel disclosed herein. Any of the features, functionalities, and details disclosed herein may be introduced into concept 600, either individually or in combination. It should be noted that any of the features, functionalities, and details disclosed regarding determining interval size information 620 based on one or more updated state variables 642 may be used independently of any of the features, functionalities, and details described regarding updating state variables.
[0552] 7. The interval size determination concept according to Figure 7 claim 6
[0553] Figure 7 A schematic representation of the interval size determination concept 700 is shown. Specifically, Figure 7 This demonstrates the functional concept of using "interval size to determine the kernel." In other words, according to... Figure 7 Concept 700 is suitable for providing interval size information based on updating state variables and also based on encoded interval size information. However, according to Figure 7 The concept 700 can be implemented using interval size determination or an interval size determiner.
[0554] The interval size determination 700, which can be considered a "interval size determination kernel," receives an updated state variable 710, which may correspond, for example, to an updated state variable 642. Furthermore, the interval size determination 700 receives encoded interval size information 712, which may correspond, for example, to encoded interval size information 652. Optionally, the interval size determination 700 also uses context information, since the functionality of the interval size determination 700 can be adjusted depending on the context. For example, the context information can take the form of a context model index k. Therefore, the specific functionality or parameters used in the interval size determination 700 can vary depending on the actual context, such as that represented by the context model index k.
[0555] The interval size determination 700 provides interval size information 720, which can correspond to interval size information 620.
[0556] Therefore, determining the interval size as 700, for example, can replace... Figure 6 The size of the interval described in the text determines the kernel size of 650.
[0557] The following text will describe some details of how the interval size is determined by kernel 700.
[0558] It should be noted that the interval size determination kernel 700 includes a first processing path 730 and a second processing path 750, which can be considered as alternatives. The first processing path 730 includes (optionally) scaling / rounding 732, wherein the first update state variable (e.g., It is scaled and / or rounded. For example, the scaling factor. This can be used for scaling the first updated state variable (value). For example, the scaling could be multiplying by a scaling factor. For example, the rounding could be rounding down to the next integer value, which is less than or equal to the scaling result. Similarly, the first processing path 730 may include a second (optional) scaling / rounding 734, which may include, for example, using a corresponding scaling factor (e.g., ) to scale the second updated state variable (e.g., The scaling and rounding state variable 733 and the second scaling and rounding state variable 735 can be obtained. Furthermore, the first processing path 730 may include a mapping 736 based on a first lookup table, which receives the updated state variable 733 of the first scaling and / or rounding and further receives quantized encoding interval size information 762. For example, the mapping 736 based on the first lookup table can use a two-dimensional lookup table to obtain the first interval size contribution 737. Similarly, the first signal processing path 730 may include a mapping 738 based on a second lookup table, which can receive the updated state variable 735 of the second scaling and / or rounding and the quantized encoding interval size information 762 and provide a second interval size contribution 739 based on the updated state variable of the second scaling and / or rounding and the quantized encoding interval size information.
[0559] For example, the mapping 736 based on the first lookup table can use a two-dimensional lookup table, wherein the first lookup table index can be determined by a first update state variable 733 that is scaled and / or rounded, and wherein the second lookup table index can be determined by quantized encoded interval size information 762. For example, the first scaled and / or rounded update state variable 733 can take an integer value within a range (e.g., from 0 to the maximum value, or from 1 to the maximum value, or within an acceptable range as the first table index). Similarly, the quantized interval size information 762 can take the form of an integer value that can serve as the second table index. For example, the quantized encoded interval size information 762 can take the form of an integer value within a range between 0 and the maximum value or between 1 and the maximum value (or within a range of any value that can serve as the second table index). In other words, both the first scaled and / or rounded update state variable 733 and the quantized encoded interval size information 762 are used as table indexes to select elements of the lookup table used in the lookup table-based mapping 736. Therefore, the entries of the lookup table used are provided as a first interval size contribution 737.
[0560] However, the mapping 738 based on the second lookup table can be performed in the same manner, wherein the scaled and / or rounded second update state variable 735 and the quantized encoded interval size information 762 are used as two indices (e.g., i and j) to select the entry of the lookup table used in the mapping 738 based on the second lookup table. Thus, the second interval size contribution 739 is obtained.
[0561] The first interval size contribution 737 and the second interval size contribution 739 can be combined in combination 740 to obtain the combined interval size contribution 742. The combined interval size contribution 742 can directly serve as the interval size information 720, or the interval size information 720 can be derived from the combined interval size contribution 742 using post-processing (e.g., fixed scaling or rounding).
[0562] In summary, when using the first processing path 730, the interval size information 720 can be obtained by combining the results of two or more lookup table-based mappings 736, 738, wherein the entries of the lookup table to be used are determined based on each updated state variable and the encoded interval size information. Therefore, the interval size information 720 can be obtained in a very efficient manner.
[0563] However, alternatively, processing as shown in the second signal processing path 750 can be performed. The processing performed by the second signal processing path is computationally more efficient, at the cost of a slight reduction in accuracy. For example, the second signal processing path 750 includes a combination 751, wherein a first updated state variable is combined with a second updated state variable (and optionally additional updated state variables) to obtain a combined updated state variable 751a. The second processing path 750 also includes optional scaling / rounding 752, which may correspond, for example, to scaling / rounding 732, 734. Thus, scaling / rounding 750 provides a combined updated state variable 733 of scaling and / or rounding for selecting elements in a lookup table-based mapping 756. The lookup table-based mapping 756 is preferably a two-dimensional mapping, wherein a first index of the lookup table is determined by the combined updated state variable 751a or its scaled and / or rounded version 753, and wherein a second index of the two-dimensional lookup table is determined by quantized encoded interval size information 762. Therefore, the lookup table-based mapping 756 provides an interval size contribution 757, which can be used as interval size information 752, or interval size information 720 can be derived from the interval size contribution through optional post-processing (e.g., scaling).
[0564] In summary, the interval size determination kernel 700 is configured to obtain interval size information 720 based on updating the state variable 710 and considering the encoded interval size information 712. In the first signal processing path 720, a lookup table-based mapping is used to determine two or more interval size contributions 737, 739, which are used to derive the interval size information 720. In the alternative second signal processing path 750, a lookup table-based mapping 756 is used to determine either the interval size contribution 757 or the interval size information 720. By using a lookup table-based mapping that considers both the updated state variable and the encoded interval size information 712 to determine the index of the lookup table, particularly efficient computation can be achieved, where multiplication operations can be omitted.
[0565] It should be noted that, according to Figure 7 The interval size determination kernel 700 can be used in any of the arithmetic encoders and arithmetic decoders described herein. Furthermore, the interval size determination kernel 700 can optionally be supplemented individually or in combination by any of the features, functionalities, and details disclosed herein.
[0566] 8. According to Figure 8 The size of the interval determines the kernel
[0567] Figure 8 A schematic block diagram of an interval size determination kernel 800 according to an embodiment of the present invention is shown. Figure 8The interval size determination kernel 800 can be used in any of the audio encoders and audio decoders disclosed herein.
[0568] The interval size determination core 800 receives updated state variables 810 and also receives encoded interval size information 812. Updated state variable 810 may correspond to, for example, updated state variable 710 or updated state variable 642. Encoded interval size information 812 may correspond to, for example, encoded interval size information 712, encoded interval size information 652, encoded interval size information 532, or encoded interval size information 434. Furthermore, the interval size determination core 800 provides interval size information 820, which may correspond to interval size information 720, interval size information 620, interval size information 534, or interval size information 432.
[0569] The interval size determination kernel 800 may include, for example, the determination 830 of a probability value 832. The probability value 832 may be obtained, for example, based on one or more updated state variables 810, and may describe, for example, the probability of the symbol to be encoded (e.g., "0" or "1"). The interval size determination kernel 830 also includes the determination 840 of the probability of less likely symbols (or, the least likely symbols), which can provide a probability value 842 describing the probability of less likely or least likely symbols. The interval size determination kernel 800 also includes quantization 850, which quantizes the probability value 842 to obtain a quantized probability value 852. Furthermore, the interval size determination kernel 800 also includes quantization 860, which quantizes the encoded interval size information to obtain quantized encoded interval size information 862. The interval size determination kernel 800 also includes a mapping 870, which receives the quantized probability value 852 and the quantized encoded interval size information 862 and maps both the quantized probability value 852 and the quantized encoded interval size information 862 onto the interval size information 820.
[0570] The following text will describe some details regarding the functionality of the interval size determination kernel 800.
[0571] The determination 830 of probability value 832 may, for example, include a first signal processing path 880 or a second signal processing path 890. It should be noted that signal processing paths 880 and 890 can be considered as alternatives. The first signal processing path 880 includes a first mapping 882, which, for example, uses a lookup table to map a first updated state variable 810 to a first probability value 883. The first signal processing path 880 also includes a second mapping 884, which, for example, uses a lookup table to map a second updated state variable 810 to a second probability value 885. The first signal processing path 880 also includes a combination 886, which may be configured, for example, to combine the first probability value 883 and the second probability value 885 using a linear combination, in which different scaling can be applied to the first probability value 883 and the second probability value 885 (and where, optionally, quantization may be used). Therefore, combination 886 provides probability value 832.
[0572] Alternatively, a second signal processing path 890 may 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 on the two or more updated state variables (e.g., using a linear combination). Furthermore, the second signal processing path 890 includes a mapping 894 that maps the combined updated state variable 893 to probability values 832, for example, using a lookup table.
[0573] Therefore, the probability value 832 can be obtained 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 introduces slightly increased complexity due to the presence of two mappings 882 and 884, and also introduces slightly increased accuracy. In contrast, the second signal processing path 890 involves only a single mapping and is therefore slightly less complex, at the cost of slightly reduced accuracy.
[0574] In determining the probability of a less likely symbol 850, the probability of the less likely symbol can be determined, for example, by selecting the smaller value between a probability value 832 and a complement of that probability value (1 minus the probability value). Thus, a probability value 842 describing the probability of the less likely symbol is obtained. This probability value 842 is, for example, quantized using a quantization function Q. p Quantization is performed in quantization 850 using either (.) or Qp2(.). Therefore, the quantized probability value or probability index i852 is obtained and used in mapping 870.
[0575] The quantization 860 of the coding interval size information 812 can, for example, provide a quantized coding interval size value 862 or a quantized coding interval size index j. However, in some cases, the quantized coding interval size value Q can be obtained. r Both the quantized encoding range size value and the encoding range size index j can be used, for example, in mapping 860. Mapping 860 can use, for example, a mapping mechanism based on the lookup table RangeTabLPS described herein, and / or the mechanism can be based on the lookup table BaseTabLPS described herein and / or the mechanism can use the lookup table ProbTabLPS described herein. Optionally, the scaling function Scal(.) described herein can also be used in mapping 870.
[0576] In other words, there can be many different mappings that can be used to derive interval size information 820 based on quantized probability values or probability indices 852 and based on quantized encoding interval size 862 and / or encoding interval size index i.
[0577] As a further explanation, it should be noted that quantization 850 can, for example, map the probability value 842 (or alternatively, probability value 832 if determination 840 is omitted) to an integer value. Alternatively, quantization 850 can map the value 842 (or alternatively, value 832 if determination 840 is optionally omitted) to a value with a numerical resolution lower than probability value 832 or probability value 842. However, preferably, the quantized probability value 852 is in the form of a probability index (e.g., i), that is, an integer representation, which can be used as a table index referring to entries in a lookup table (e.g., RangeTabLPS).
[0578] Quantization 860 can yield different results. For example, the encoding interval size information 812 can be quantized into the quantized encoding interval size information 862, which includes a lower resolution than the encoding interval size information 812. In other words, the range of values of the encoding interval size information 812 can be mapped to the individual quantized values of the quantized encoding interval size information 862, where the quantization can be, for example, linear or non-linear. Alternatively or additionally, the encoding interval size information can be mapped to the encoding interval size index j, i.e., mapped to a continuous range of integer values, which can be directly used as a table index for selecting entries in a lookup table. However, it should be noted that in some cases, both quantized encoding interval size information quantized to different values and quantized encoding interval size information quantized to different indices i (i.e., quantized to integer values) can be used.
[0579] As described above, different concepts described in this article can be used to map 870.
[0580] In summary, the interval size determination kernel 800 can be used in any of the arithmetic encoders and arithmetic decoders described herein. Furthermore, the interval size determination kernel 800 can optionally be supplemented individually or in combination by any of the features, functionalities, and details disclosed herein.
[0581] 9. According to Figure 9 The size of the interval determines the kernel
[0582] Figure 9 A schematic block diagram of an interval size determination kernel 900 is shown, which can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein.
[0583] An interval size determination core 900 is configured to receive state variable values 910 and provide interval size information 920. Generally, the interval size determination core 900 is configured to derive the interval size information 920 based on arithmetic encoding (or arithmetic decoding) of one or more symbol values to be encoded for a plurality of state variable values 910, which represent statistics of a plurality of previously encoded symbol values with different adjustment time constants. The interval size determination core 900 includes optional first scaling and / or rounding 930, wherein a first state variable (which may be an updated state variable) is scaled and / or rounded. The interval size determination core 900 also includes optional second scaling and / or rounding 934, wherein a second state variable is scaled and / or rounded. Thus, the optional first scaling and / or rounding provides a first-scaled and / or rounded state variable 932, and the optional second scaling and / or rounding 934 provides a second-scaled and / or rounded state variable 934.
[0584] The interval size determination kernel 900 also includes a first mapping 940 using a lookup table. The first mapping 940 uses a lookup table (e.g., lookup table LUT1 or a two-dimensional lookup table defined for multiple distinct values R·LUT1) to map a first state variable or a scaled and / or rounded version 932 of the first state variable. Therefore, a first probability value 942 is obtained through the first mapping 940. The interval size determination kernel 900 also includes a second mapping 950 using a lookup table (e.g., lookup table LUT1 or a two-dimensional lookup table defined for multiple distinct values R·LUT1) to map a second state variable or its scaled and / or rounded version 934. Therefore, a second probability value 952 is obtained through the second mapping 950 based on the value of the second state variable or based on its scaled and / or rounded version 934.
[0585] Finally, the interval size information 920 was obtained based on the first probability value 942 and the second probability value 952.
[0586] However, it should be noted that the determination of the first probability value 942 and the second probability value 952 should only be considered as an example of how these quantities can be obtained using the first mapping 940 and the second mapping 950. In contrast, other quantities, such as, for example, the contribution to the interval size information 920, can also be derived using the first mapping 940 and the second mapping 950.
[0587] However, it should be noted that, Figure 9 The interval size determination kernel 900 described herein can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein. Furthermore, it should be noted that the interval size determination kernel 900 can optionally be supplemented individually or in combination by any of the features, functionalities, and details described herein.
[0588] 10. According to Figure 10a and Figure 10b The size of the interval is determined
[0589] Figure 10a A schematic representation of a concept for determining interval size information is shown, which can be used, for example, in an interval size determination kernel.
[0590] As can be seen, Figure 10aThe concept 1000 receives multiple state variable values 1010a, 1010b, which can correspond to state variable value 910 and can be updated state variable values. Furthermore, concept 1000 provides interval size information 1020, which can correspond to interval size information 920. Concept 1000 includes a first mapping 1040 that maps a first state variable value 1010a (or its scaled and / or rounded version) to a first probability value 1042 that can correspond to a first probability value 942. Furthermore, concept 1000 includes a second mapping 1050 that maps a second state variable value 1010b (or its scaled and / or rounded version) to a second probability value 1052. Furthermore, concept 1000 includes a combination of the first probability value 1042 and the second probability value 1052, which can be performed, for example, using equation (7). Therefore, combination 1060 provides a combined probability value 1062. Furthermore, concept 1000 includes a multiplication 1070 of the combination probability value 1062, wherein this multiplication can be performed using the encoding interval size value R. Therefore, interval size information 1020 is obtained based on the multiplication 1070 between the combination probability value 1062a and the encoding interval size value R. The interval size information 1020 may, for example, describe the size of the encoding interval associated with the less likely symbol or the least likely symbol (or alternatively, the size of the encoding interval associated with the more likely symbol or the most likely symbol). Optionally, concept 1000 may include a mechanism for deriving the probability of the less likely symbol or the least likely symbol (e.g., between combination 1060 and multiplication 1070), or may include a mechanism for deriving the interval size information associated with the less likely symbol or the least likely symbol based on the result of multiplication 1070.
[0591] Therefore, according to Figure 10a Concept 1000 can achieve things like... Figure 9 The described functionality.
[0592] It should be noted that Concept 1000 can be used in any of the arithmetic encoders or arithmetic decoders disclosed herein.
[0593] Moreover, Concept 1000 may optionally be supplemented individually or in combination by any of the features, functionalities and details disclosed herein.
[0594] Figure 10bA schematic block 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 is shown. Concept 1080 includes 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, 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.
[0595] The first mapping 1085a and the second mapping 1085b can be performed, for example, using a two-dimensional lookup table. The two-dimensional lookup table can, for example, define the product between the quantized value of the encoding interval size information R and a one-dimensional lookup table (e.g., LUT1) for multiple distinct values of R. In other words, each row or column of the two-dimensional lookup table used in mapping 1085a can define the product between the lookup table LUT1 as described herein and the respective encoding interval size values associated with said row or column. The same can be done with the two-dimensional lookup table used in the second mapping 1085b, wherein the lookup table may be the same as or different from the lookup table used in the first mapping 1085a. Furthermore, it should be noted that the encoding interval size information can be used in both the first mapping 1085a and the second mapping 1085b to select appropriate elements of the two-dimensional lookup table (where, for example, the first lookup table index may be based on individual state variable values, and the second lookup table index may be based on its encoding interval size value (or quantized version Qr(R)).
[0596] Therefore, interval size information 1084 can be obtained with extremely low computational complexity. Furthermore, it should be noted that appropriate processing can be inserted between maps 1085a, 1085b and combination 1088, which combines interval size contributions 1086a, 1086b, to determine the contribution to the interval size associated with the less likely or least likely symbol. Alternatively, however, post-processing can be optionally inserted after combination 1088 to determine the interval size for the least likely symbol or for the less likely symbol based on the result of combination 1088 of interval size contributions 1086a, 1086b.
[0597] In short, according to Figure 10b The concept 1080 can be used to derive interval size information 1086 based on the state variable values 1082a, 1082b and also depending on the encoded interval size information or the encoded interval size value.
[0598] Furthermore, it should be noted that Concept 1080 can be used in either the arithmetic encoder or the arithmetic decoder disclosed herein.
[0599] In addition, it should be noted that Figure 10b Concept 1080 may optionally be supplemented individually or in combination by any of the features, functionalities and details disclosed herein.
[0600] 11. According to Figure 11 The size of the interval determines the kernel
[0601] Figure 11 A schematic block diagram of an interval size determination kernel 1100 according to an embodiment of the present invention is shown.
[0602] The interval size determination kernel receives multiple (typically updated) state variable values 1110 and provides interval size information 1120 based on these multiple state variable values. Generally, the interval size determination kernel 1100 is configured to derive interval size information for arithmetic encoding (or arithmetic decoding) of one or more symbols to be encoded (or one or more symbols to be decoded) based on the multiple state variable values 1110, which represent statistics of multiple previously encoded (or previously decoded) symbol values with different adjustment time constants. The interval size determination kernel 1100 includes a combiner / combiner 1130 configured to derive a combined state variable value 1132 based on the multiple state variable values 1110. Optionally, the interval size determination kernel 1100 includes scaling and / or rounding 1140 that scales and / or rounds the combined state variable value 1132 to obtain a scaled and / or rounded combined state variable value 1142. Furthermore, the interval size determination kernel 1100 includes a lookup table-based mapping 1150 configured to use the lookup table to map combined state variable values 1132 or their scaled and / or rounded versions 1142 to obtain interval size information describing the interval size (e.g., the size of an interval associated with a specific symbol, such as a lower or higher significant symbol) for arithmetic encoding / decoding. Optionally, however, post-processing 1160 can be used to derive interval size information 1120 based on the result 1152 of the lookup table-based mapping 1150.
[0603] It should be noted that the interval size determination kernel 1100 can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein. Furthermore, it should be noted that the interval size determination kernel 11 can optionally be supplemented by any of the features, functionalities, and details disclosed herein.
[0604] 12. According to Figure 12 State variable update
[0605] Figure 12A schematic block diagram of state variable updating according to an embodiment of the present invention is shown. State variable update 1200 (which can also be considered a state variable updater) is configured to receive symbol values 1210, which may be the symbol value of a symbol to be encoded or the symbol value of a previously decoded symbol (or, the symbol value of a previously encoded symbol). Furthermore, 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. Specifically, state variable update 1200 may be configured to update a first state variable value based on the symbol value (e.g., representing a symbol to be encoded, a previously encoded symbol, or a previously decoded symbol) and using a lookup table. In other words, state variable update 1210 may include a lookup table-based state variable update or a lookup table-based state variable updater 1230. Therefore, updated state variable values can be provided based on corresponding previously determined state variable values and taking into account symbol values, which may be based on the symbol to be encoded, a previously encoded symbol, or a previously decoded symbol.
[0606] Therefore, state variable update 1200 can provide one or more updated state variable values. If multiple updated state variable values need to be determined, a lookup table-based state variable update can be performed separately for each state variable value (however, the same mechanism and / or the same lookup table may be used, which may have different scaling parameters and / or quantization functionality).
[0607] However, the state variable update 1200 described herein can be used in any of the arithmetic encoders and arithmetic decoders disclosed herein. It should be noted, however, that the state variable update 1200 can optionally be supplemented individually or in combination by any of the features, functionalities, and details disclosed herein.
[0608] 13. According to Figure 13 The size of the interval determines the kernel
[0609] Figure 13 A schematic block diagram of an interval size determination kernel 1300 according to an embodiment of the present invention is shown.
[0610] The interval size determination kernel receives one or more state variable values 1310, which may be, for example, updated state variable values. Furthermore, the interval size determination kernel provides an interval size value 1320 based on one or more state variable values 1310.
[0611] The interval size determination kernel includes a lookup table evaluation mechanism 1330, which receives a probability index 1332, which can be based on one or more state variable values 1310, and provides an interval size value 1320.
[0612] For example, probability index 1332 can be derived from one or more (updated) state variable values using probability index derivation 1340 (which may include scaling and / or rounding and / or quantization).
[0613] For example, one or more updated state variable values 1310 can be determined in an arithmetic encoder or arithmetic decoder as disclosed herein, and can represent statistics of multiple previously encoded symbol values.
[0614] Generally, the interval size determination kernel 1300 is configured to determine the interval size value 1320 using a base lookup table 1350. The lookup table evaluation mechanism can be configured to determine the interval size value 1320 such that if the probability index 1332 obtained based on 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 index 1332 is within a second range, a scaling 1360 (and optionally, rounding) of the elements of the base lookup table 1350 is used to obtain the determined interval size value. Therefore, the interval size value 1320 can be used to perform arithmetic encoding or decoding of one or more symbols.
[0615] In other words, it can be based on, for example, Figure 8 The probability index 1332 derived from one or more (updated) state variable values shown (first signal processing path 880 or second signal processing path 890, in combination with optional determination 840 and quantization 850) can be used to determine whether to use entries of the basic lookup table "as is" or by scaling 1360 (which can be determined by probability index 1332).
[0616] In other words, probability index 1332 can determine which element of the basic lookup table 1350 to select (as indicated schematically at reference numeral 1370) and whether to perform scaling of that selected entry of the basic lookup table 1350 (as symbolically shown at reference numeral 1380). For example, the selection of an entry of the basic lookup table 1370 can be determined by one or more least significant bits of probability index 1332, and the decision to perform scaling 1360 can be made based on one or more most significant bits of probability index 1332. However, instead of the evaluation bit set, the selection of an entry of the basic lookup table 1350 can be determined by the division residual of probability index 1332 divided by a predetermined value, and the decision to perform scaling 1360 can be made depending on the determination of which range of multiple ranges the currently considered probability index value falls within.
[0617] Furthermore, it should be noted that, optionally, encoded interval size information (e.g., R) may be considered when selecting entries of the base lookup table 1350 (e.g., if the base lookup table is a two-dimensional table). In another alternative, encoded interval size information (e.g., R) may be used to determine whether additional scaling (e.g., applied to selected entries of the base lookup table) dependent on encoded interval size information should be performed to obtain the interval size value 1320.
[0618] However, it should be noted that the interval size determination kernel 1300 described herein can be used in either the arithmetic encoder and arithmetic decoder disclosed herein to derive the interval size value.
[0619] Furthermore, it should be noted that the interval size determination kernel 1300 may optionally be supplemented by any of the features, functionalities and details disclosed herein.
[0620] 14. Determining the kernel by the size of the interval
[0621] Figure 14 A schematic block diagram of an interval size determination kernel 1400 according to an embodiment of the present invention is shown.
[0622] The interval size determination core 1400 receives one or more state variable values 1410, which may be, for example, updated state variable values. Furthermore, the interval size determination core 1400 provides an interval size value 1420 based on the one or more state variable values 1410.
[0623] The interval size determination kernel 1400 includes a lookup table evaluation mechanism 1430 that receives a probability index 1432, which may be based on one or more state variable values 1410, and provides interval size information or an interval size value 1420.
[0624] For example, probability index derivation 1440 can be used to derive probability index 1432 based on one or more (updated) state variable values.
[0625] For example, the one or more updated state variable values 1410 can be determined in an arithmetic encoder or arithmetic decoder as disclosed herein, and can represent a statistic of multiple previously encoded symbol values and / or multiple previously decoded symbol values.
[0626] Generally, the interval size determination kernel 1400 is configured to determine the interval size value 1420 using a probability table (e.g., Probability Table LPS) based on probability values derived from one or more state variable values 1410 (e.g., probability index 1432) and based on the encoded interval size (e.g., described by encoded interval size information 1412). For example, probability table 1450 describes the interval size for a set of multiple different probability values (or probability index 1432) and for a given encoded interval size (e.g., for a single given reference encoded interval size). Figure 14 As can be seen, probability index 1432 can be used, for example, to select which element in the probability table serves as the basis for providing the interval size value 1420. In other words, probability index 1432 determines the selection of elements of the probability table for further processing. Furthermore, probability index 1432 is determined, and the selected entries of the probability table are scaled in scaling 1460 by this value. Generally, the interval size determination kernel can be configured to scale elements or entries of the probability table (e.g., elements selected depending on the current probability value or probability index 1432) when the current probability value is not a set of multiple probability values and / or when the current encoded interval size differs from a given (reference) encoded interval size. In other words, the interval size value 1420 can be derived from the selected entries of the probability table 1450 using scaling 1460, where the scaling can depend on both the probability value or probability index 1432 and the encoded interval size information 1412.
[0627] For example, entries in probability table 1450 may be associated with a single coding interval size and a given range of probability values or probability indices (wherein, this range may typically cover three or more different probability values or probability indices, and the number of entries in the probability table may preferably be a two-fold potency to facilitate computation). If the coding interval size 1412 differs from a reference coding interval size associated with an entry in probability table 1450, scaling 1460 may, for example, scale selected entries in probability table 1460. In other words, if the actual coding interval size 1412 differs from a reference coding interval size (e.g., the coding interval size associated with an entry in probability table 1450), scaling 1460 may account for this deviation (at least if the deviation between the reference coding interval size and the actual coding interval size 1410 exceeds the size of the quantization interval used to quantize the coding interval size). Furthermore, scaling 1460 may also consider whether the probability value or probability index 1432 is outside the range of probability values or probability indices associated with an entry in probability table 1450. For example, if an entry in probability table 1450 is associated with a first range of the probability index but the actual probability index 1432 is located in a second range of an index that does not overlap with the first range of the probability index, then scaling 1460 may take this finding into account and apply additional scaling (in addition to scaling based on the deviation between the actual coding interval size and the reference coding interval size).
[0628] In summary, if the probability value or probability index 1432 is within the set of multiple probability values for which the probability table entry is provided, and if the actual coding interval size 1412 is equal to the reference coding interval size (or, quantized to a value equal to the reference coding interval size), then the interval size determination kernel 1400 can provide the selected entry of the probability table 1450 as the interval size value 1420. On the other hand, if the probability value or probability index 1432 is outside the set of multiple probability values for which the probability table entry is provided, and / or if the actual coding interval size 1412 deviates from the reference coding interval size (e.g., deviates to such that the actual coding interval size is quantized to a different value), then scaling 1460 scales the selected entry of the probability table 1450 to obtain the interval size value 1420.
[0629] Therefore, a relatively small lookup table 1450 can be used to obtain the interval size value 1420. This lookup table can be, for example, a one-dimensional probability table, the number of entries of which is less than the number of different possible probability values or probability index values (e.g., at least a factor of 2).
[0630] However, it should be noted that the interval size determination kernel 1400 may optionally be supplemented by any of the features, functionalities, and details described herein. Furthermore, it should be noted that the interval size determination kernel 1400 may optionally be used in any of the arithmetic encoders or arithmetic decoders disclosed herein, and also in any of the video encoders or video decoders disclosed herein.
[0631] 15. According to Figure 15 The size of the interval determines the kernel
[0632] Figure 15 A schematic block diagram of an interval size determination kernel 1500 according to an embodiment of the present invention is shown.
[0633] 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, one or more state variable values 1510 may include combined state variable values. Furthermore, the interval size determination core 1500 is configured to provide an interval size value 1520, which may be, for example, a sub-interval width value, such as R. LPS .
[0634] The interval size determination kernel 1500 includes optional mapping and / or rounding to determine a state variable value representing a statistical representation of multiple previously processed (e.g., previously encoded or previously decoded) symbol values. Generally, the arithmetic encoder is configured to perform arithmetic encoding or decoding of the symbol values to be encoded or decoded based on a combined state variable value (e.g., based on an updated combined state variable value 1510) or based on its scaled and / or rounded version to compute a sub-interval width value (e.g., interval size value 1520). The interval size determination kernel 1500 includes, for example, a one-dimensional lookup table 1550 for mapping a state variable value (e.g., a combined state variable value) or its scaled and / or rounded version to probability values. For example, entries in the one-dimensional lookup table 1550 include probability values for different value intervals within the range of values for the combined state variable value. Furthermore, the interval size determination kernel includes quantization 1560, which is configured to quantize encoding interval size information 1512, describing (e.g., before arithmetic encoding of a symbolic value to be encoded, or before arithmetic decoding of a symbolic value to be decoded), onto a quantization level. Thus, quantized encoding interval size information 1562 is provided. Additionally, scaling / multiplication 1570 is present, which determines the product between the probability value and the quantization level (or more precisely, the quantized encoding interval size information 1562) (e.g., using a lookup of a pre-computed product, or using multiplication). For example, the probability value is provided by selecting an entry in a one-dimensional lookup table 1550 depending on the state variable value or its scaled and / or rounded version. This probability value 1552 can then be scaled depending on the (quantized) encoding interval size information 1562 (i.e., depending on the "quantization level"), where the scaling can correspond to the determination of the product between the probability value and the quantization level. Therefore, the interval size value of 1520 is provided in an efficient manner, where a one-dimensional lookup table is sufficient.
[0635] However, it should be noted that the interval size determination kernel 1500 described herein may optionally be supplemented individually or in combination by any of the features, functionalities, and details described herein. Furthermore, it should be noted that the interval size determination kernel 1500 can now be used in either the arithmetic encoder and arithmetic decoder described herein, or in either the video encoder and video decoder described herein.
[0636] 16. According to Figure 16 video decoder
[0637] Figure 16 A schematic block diagram of a video decoder 1600 according to an embodiment of the present invention is shown.
[0638] The video decoder 1600 is configured to receive encoded video information and provide decoded video information (or, decoded video content) based on the encoded video information.
[0639] The encoded video information 1610 (which can be considered as a video bitstream) may include, for example, slice type information, and may also include an encoded representation of a binary sequence. Optionally, the encoded video information 1610 may include additional information; however, such additional information is not essential to the present invention.
[0640] Generally, a video decoder is configured to decode multiple video frames (e.g., a sequence of video frames), and the video decoder can be configured, for example, to decode video frames subdivided into a set of one or more slices (preferably, subdivided into multiple slices). The video decoder can be configured, for example, to evaluate slice type information to select an operating mode for decoding the slice (e.g., which can be performed by the "video reconstruction" block 1680), wherein the slice type information is included in the encoded video information 1610 and indicates whether to encode the slice using an independent coding mode, a single predictive mode, or a dual predictive mode. In the independent coding mode, there is no prediction of the video content of the current frame based on the video content of previous frames. In the single predictive mode, there is a prediction of a block-to-block pixel based on pixels of previous frames. In the dual predictive mode, there are predictions of two or more block-to-block pixel based on pixels of one or more previous frames.
[0641] The video decoder 1600 includes an arithmetic decoder 1620, which is configured, for example, to provide a decoded binary sequence 1622 (for use by a “video reconstruction” block) based on an encoded representation of the binary sequence, which is included in the encoded video information 1610. The arithmetic decoder preferably includes a first source static value determination 1630 and a second source statistical value determination 1640. Therefore, the arithmetic decoder 1620 is configured to: determine a first source statistical value 1632 (e.g., a first state variable value) using a first window size (or, using a first time constant) (where, for example, state variable updates can be used as described herein); and determine a second source statistical value 1642 (e.g., a second state variable value) using a second window size (or, using a second time constant) (where, for example, state variable updates can be used as described herein). The arithmetic decoder may also optionally include a combiner 1650. Therefore, the arithmetic decoder may be configured to determine a combined source statistical value 1652 (e.g., a combined state variable value) based on the first source static value and the second source statistical value.
[0642] Furthermore, the arithmetic decoder 1620 preferably includes a range value determination 1660 (e.g., it may include an interval size determination kernel as described herein or any of the interval size determinations described herein). Therefore, the arithmetic decoder can be configured to determine one or more range values (or interval size information as described herein) for interval subdivision based on a combined source statistic 1652 (or, based on a first statistic and a second source statistic), which is used to map the encoded representation of the binary sequence (included in the encoded video information 1610) onto the decoded binary sequence 1622 (used by the video reconstruction block 1680).
[0643] Preferably, the arithmetic decoder 1620 also includes an arithmetic decoding core 1670 (e.g., a block or unit) that receives one or more range values 1662 from a range value determination 1660 and uses these range values to derive a decoded binary sequence 1622 from the encoded binary sequence included in the encoded video information 1610.
[0644] In addition, the video decoder may include, for example, a video reconstruction block (or unit) 1680 that receives the decoded binary sequence 1622 and provides the decoded video content 1612 (possibly considering additional control information such as slice type information) based on the decoded binary sequence 1622.
[0645] In summary, the arithmetic decoder 1600 receives encoded video information 1610 and performs arithmetic decoding of the encoded representation of the binary sequence to derive a decoded binary sequence 1622. This arithmetic decoding utilizes knowledge about the probabilities of binary values within the decoded binary sequence 1622. The arithmetic decoding core 1670 considers this knowledge about the probabilities (or estimated probabilities) of binary values within the decoded binary sequence 1622 by relying on range values 1662 that define interval subdivisions. In short, the arithmetic decoding core can use range values 1662 to define different intervals (e.g., between 0 and 1, or within a range of integer values). For example, the arithmetic decoding core can interpret the encoded representation of the binary sequence as a representation of a number located within one of the intervals defined using the range values. By identifying which interval the number represented by the encoded representation of the binary sequence falls within, the arithmetic decoding core 1670 can infer which bit or which bit sequence was encoded using the encoded representation of the binary sequence.
[0646] However, it should be noted that this explanation of the arithmetic decoding kernel 1670 should only be considered a very brief and general one. Details regarding the arithmetic decoding kernel can be found, for example, in standards H.264 and H.265. However, different concepts (for the operation of the arithmetic decoding kernel) can also be seen from these documents, and the details of the arithmetic decoding kernel are not particularly relevant to this invention.
[0647] However, to obtain a suitable range value (allowing for high bit rate efficiency), the arithmetic decoder 1620 (or more generally, the video decoder) uses different window sizes to determine the two source statistics 1632, 1642 (where "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 combined in some embodiments to form a combined source statistics 1652.
[0648] Therefore, it can be said that the video decoder 1600 provides high efficiency because the range of values used by the arithmetic decoding core 1670 is well adapted to the actual probability of bit values (e.g., bit values "0" and "1" within the decoded binary sequence 1622).
[0649] As an additional note, it should be observed that the video decoder 1600 can also be modified. In an alternative implementation, the second source statistics determination 1640 can be replaced by a provided fixed value (which can be independent of the decoded binary sequence but can depend on one or more parameters). In this case, the arithmetic decoder is optionally configured to combine the first source statistics 1632 with a fixed non-zero value to obtain a combined source statistics 1652. It has been found that such simplification yields good results in some cases and, for example, can avoid inappropriate and drastic variations in the combined source statistics. In other words, by introducing a fixed contribution into the determination of the combined source statistics, it is possible to ensure that the combined source statistics do not deviate significantly from the fixed value. Therefore, if a long sequence of the same bit values happens to exist within the decoded binary sequence 1622, some "hindsight" within the statistics of the decoded binary sequence can be used to avoid a strong degradation in coding efficiency.
[0650] As an additional note, it should be observed that the functionality of the arithmetic decoder (and its individual blocks) can generally also be considered as the functionality of the entire video decoder. In other words, the functionality described herein as that of the arithmetic decoder can also be performed by other blocks of the video decoder.
[0651] In addition, it should be noted that, according to Figure 1The video decoder 1600 can be supplemented individually or in combination by any of the features, functionalities and details described herein.
[0652] 17. According to Figure 17 video decoder
[0653] Figure 17 A schematic block diagram of a video decoder 1700 according to an embodiment of the present invention is shown.
[0654] The video decoder 1700 is configured to receive encoded video information 1710 (e.g., a video bitstream) and, based on this encoded video information, provide decoded video content 1712 (e.g., a sequence of video frames). The encoded video information 1710 may include, for example, slice type information, as described herein. The encoded video information 1710 may also include configuration information, which can also be considered control information. Furthermore, the encoded video information 1710 may include an encoded representation of a binary sequence.
[0655] exist Figure 17 The diagram illustrates two main blocks of the video decoder 1700: the arithmetic decoder 1720 and the video reconstruction 1780. However, it should be noted that the distribution of functionality in the video decoder is not constrained by a fixed block structure but can be modified extensively. Furthermore, it should be noted that the actual implementation of the video decoder can have additional blocks and / or functionalities well known to those skilled in the art.
[0656] Arithmetic decoder 1720 receives an encoded representation 1711 of the binary sequence. However, the arithmetic decoder (or, a control block external to the arithmetic decoder) may optionally receive slice type information and configuration information (or, control information). Specifically, optionally taking into account some or all of the slice type information and configuration or control information, the arithmetic decoder 1720 provides the decoded binary sequence 1722 to video reconstruction 1780 based on the encoded representation 1711 of the binary sequence.
[0657] The functionality of the arithmetic decoder 1720 will be described in more detail below. The arithmetic decoder includes an arithmetic decoding core 1770 that receives an encoded representation 1711 of a binary sequence and provides a decoded binary sequence 1722. The arithmetic decoding core determines which bit values of the decoded binary sequence 1722 are represented by the encoded representation 1711 of the binary sequence. For this purpose, the arithmetic decoding core 1770 examines which interval of a range of numbers the number represented by the encoded representation 1711 of the binary sequence falls within. A specific bit value, group of bits, or symbol of the decoded binary sequence 1722 is identified depending on the decision of which interval of a range (at least two) the number represented by the encoded representation 1711 of the binary sequence falls within.
[0658] For the purpose of deriving the decoded binary sequence 1722, the arithmetic decoding core receives information about intervals, which typically corresponds to some degree of probability of bit values. In the present case, the arithmetic decoding core 1770 receives "range values" or "interval size information" 1762 for interval subdivision (i.e., range values 1762 for defining the range of numbers to be used by the arithmetic decoding core 1770). Specifically, it should be noted that the arithmetic decoding core 1770 may, for example, be similar to or the same as the arithmetic decoding core used in a video encoder / decoder according to the H.264 standard or in a video encoder / decoder according to the H.265 standard. However, it should be noted that different methods for implementing the arithmetic decoding core 1770 may also be used.
[0659] Given the above discussion, it is evident that an important function of the arithmetic decoder 1720 is to provide range values or interval size information 1762 that defines the interval subdivisions used by the arithmetic decoding core 1770. Generally, optionally, considering some control information defining parameters such as initialization values, "window size," "window size adjustment," etc., the arithmetic decoder 1720 derives these range values 1762 based on previously decoded binary values of the decoded binary sequence 1722.
[0660] In the arithmetic decoder 1700, two source statistics determination blocks (or units) 1730 and 1740 are used (e.g., which may correspond to state variable updates as described herein). For example, the first source statistics determination block 1730 receives one or more previously decoded binary values (or symbolic values) (also denoted by x) from the decoded binary sequence 1722. t The first source statistics determination block (identified by the identifier) provides a first source statistic 1732 (which may correspond to the first state variable value described herein) based on the one or more previously decoded binary values. The first source statistics determination block may, for example, receive some configuration information (such as constants or ...
Claims
1. An arithmetic encoder (34; 400) for encoding multiple symbols (24"; 410) having sign values, in, The arithmetic encoder is configured to determine one or more state variable values (s1) k s2 k ;642, 644;710;810;910;1010a, 1010b;1082a, 1082b;1110;1210;1310;1410;1510;1632, 1642;1732, 1742), wherein the one or more state variable values represent statistics of multiple previously encoded symbol values, and The arithmetic encoder is configured to base its operation on the one or more state variable values (s). i k This is used to derive the interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k ;432;534;620;720;820;1020;1084;1120;1320;1420;1520;1662;1762), wherein the one or more state variable values represent the statistics of multiple previously encoded symbol values, The arithmetic encoder is configured to update the value of a first state variable (s) based on the symbol to be encoded and using a lookup table (A). k 1), The arithmetic encoder is configured to selectively increase or decrease the value of a previously calculated state variable using the lookup table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value; and Its features are, The arithmetic encoder is configured such that if the symbol to be encoded takes a first value, it depends on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The arithmetic encoder is configured such that if the symbol to be encoded takes a second value, it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The arithmetic encoder is configured to update the second state variable value (s) based on the symbol to be encoded and using the lookup table (A). k 2).
2. An arithmetic decoder (50; 500; 1620; 1720) for decoding multiple symbols (24"; 520; 1622; 1722) with sign values, in, The arithmetic decoder is configured to determine one or more state variable values (s1) k s2 k ;642,644;710;810;910;1010a,1010b;1082a,1082b;1110;1210;1310;1410;1510;1632,1642;1732,1742), wherein the one or more state variable values represent statistics of multiple previously decoded symbol values, and The arithmetic decoder is configured to base its operation on the one or more state variable values (s). i k This is used to derive the interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously decoded symbol values. The arithmetic decoder is configured to update the value of the first state variable (s) based on the decoded symbol and using a lookup table (A). k 1), The arithmetic decoder is configured to selectively increase or decrease the previously calculated state variable value using the lookup table, depending on whether the decoded symbol takes a first value or a second value different from the first value; and Its features are, The arithmetic decoder is configured such that if the decoded symbol takes a first value, it depends on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The arithmetic decoder is configured such that if the decoded symbol takes a second value, it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The arithmetic decoder is configured to update the second state variable value (s) based on the decoded symbol and using the lookup table (A). k 2).
3. An encoder (10) for encoding audio content, video content, images, or neural network coefficients, in, The encoder is configured to encode audio content, video content, images, or neural network coefficients. The encoder includes an arithmetic encoder (34; 400) according to claim 1, which provides an encoded binary sequence (420) based on a sequence of binary values (410) representing audio content, video content, images, or neural network coefficients.
4. A decoder (20; 1600; 1700) for decoding audio content, video content, images, or neural network coefficients. in, The decoder is configured to decode audio content, video content, images, or neural network coefficients. The decoder includes the arithmetic decoder (50; 500; 1620; 1720) according to claim 2, wherein the arithmetic decoder provides the decoded binary sequence (24", 520; 1622; 1722) based on the encoded representation of the binary sequence (14; 510; 1610; 1710).
5. A method for encoding multiple symbols having sign values, in, The method includes: determining one or more state variable values (s1) k s2 k The one or more state variable values represent statistics of multiple previously encoded symbol values, and The method includes: based on the one or more state variable values (s) i k This is used to derive the interval size information (p) for the arithmetic encoding of one or more symbol values to be encoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously encoded symbol values. The method includes: updating the value of a first state variable (s) based on the symbol to be encoded and using a lookup table (A). k 1), The method includes: selectively increasing or decreasing a previously calculated state variable value using the lookup table, depending on whether the symbol to be encoded takes a first value or a second value different from the first value; and Its features are, The method includes: if the symbol to be encoded takes a first value, then depending on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The method includes: if the symbol to be encoded takes a second value, then it depends on the inverted version of a predetermined offset value multiplied by -1 of a previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The method includes: updating the value of the second state variable (s) based on the symbol to be encoded and using the lookup table (A). k 2).
6. A method for decoding multiple symbols having sign values. in, The method includes: determining one or more state variable values (s1) k s2 k The one or more state variable values represent statistics of multiple previously decoded symbol values, and The method includes: based on the one or more state variable values (s) i k This is used to derive the interval size information (p) for arithmetic decoding of one or more symbol values to be decoded. k R*p k The one or more state variable values represent a statistical representation of multiple previously decoded symbol values. The method includes: updating the value of a first state variable (s) based on the decoded symbol and using a lookup table (A). k 1), The method includes: selectively increasing or decreasing the previously calculated state variable value using the lookup table, depending on whether the decoded symbol takes a first value or a second value different from the first value; and Its features are, The method includes: if the decoded symbol takes a first value, then depending on a predetermined offset value and a previously calculated first state variable value. or its scaled and / or rounded version The sum of these factors determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable; and The method includes: if the decoded symbol takes a second value, then depending on the inverted version of the predetermined offset value multiplied by -1 of the previously calculated first state variable value, or its scaled and / or rounded version. The sum of these values determines the index of the entry in the lookup table to be evaluated when updating the value of the first state variable. The method includes: updating the value of the second state variable (s) based on the decoded symbol and using the lookup table (A). k 2).
7. A computer-readable medium storing a computer program, wherein, The computer program executes the method according to claim 5 or 6 when it is run on a computer.
Citation Information
Patent Citations
Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a detection of a group of previously-decoded spectral values
CN102667922A
Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using an optimized hash table
CN103119646A
Context initialization in entropy coding
CN107333141A
A two-value arithmetic coding method of digital signal
CN1703089A
Audio encoder, audio decoder, method for encoding an input audio information, method for decoding an input audio information and computer program using improved coding tables
TW201126508A