Arithmetic encoder for arithmetically encoding sequence of information values, arithmetic decoder for arithmetically decoding, method for arithmetically encoding and decoding sequence of information values, and computer program for implementing method
By providing entry point information in the bitstream, multiple decoders can operate in parallel, solving the problem of limited arithmetic decoding speed in existing technologies and achieving a more efficient encoding and decoding process.
Patent Information
- Application Number
- CN202511091770.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2020-10-06
- Filing Date
- 2021-10-05
- Publication Date
- 2025-11-11
AI Technical Summary
Existing arithmetic decoding processes are limited in decoding speed due to their serial coding process, making parallelization difficult.
By providing entry point information to the bitstream, multiple decoders can operate in parallel, enabling parallelization of arithmetic decoding. The internal parameters of the arithmetic encoder and decoder are renormalized and updated, ensuring efficient decoding.
It improves the speed and efficiency of arithmetic decoding, enables parallel decoding of different parts of a single bitstream, and enhances the overall performance of encoding and decoding.
Smart Images

Figure CN120934535A_ABST
Abstract
Description
[0001] This application is a divisional application of Fraunhofer Institute for the Promotion of Applied Research, filed on October 5, 2021, with application number 202180081999.5, entitled "Arithmetic encoder for arithmetic encoding of information value sequences, arithmetic decoder for arithmetic decoding, and a method and implementation method for arithmetic encoding and decoding of information value sequences". Technical Field
[0002] This application relates to arithmetically encoding a sequence of information values into an arithmetic write-code bitstream, specifically by providing entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be recovered backward from a predetermined entry point.
[0003] According to embodiments of the present invention, an arithmetic encoder is used for arithmetically encoding sequences of information values.
[0004] Other embodiments of the invention relate to an arithmetic decoder for arithmetically decoding sequences of information values.
[0005] Other embodiments of the present invention relate to a method for arithmetically encoding sequences of information values.
[0006] Other embodiments of the present invention relate to a method for arithmetically decoding sequences of information values.
[0007] According to other embodiments of the present invention, a computer program is provided for performing a method for arithmetically encoding and decoding sequences of information values.
[0008] Other embodiments of the invention relate to bitstreams generated using an arithmetic encoder for arithmetically encoding sequences of information values.
[0009] Other embodiments of the invention relate to an arithmetic encoder for arithmetically encoding neural network parameters.
[0010] Other embodiments of the invention relate to an arithmetic decoder for arithmetically decoding neural network parameters.
[0011] This invention can be applied to any data compression application involving signaling of integer values, such as, for example, the compression of neural network parameters. Background Technology
[0012] Numerous apparatuses and methods are currently known for arithmetically encoding and decoding value sequences. In particular, context-based adaptive binary arithmetic write code (CABAC) is widely used for encoding and decoding symbol sequences. In the binaryization stage of CABAC, each symbol of such a sequence is converted into a sequence of one or more binary symbols (binary numbers), and the concatenation of these binary number sequences is arithmetically encoded into a bitstream. The context modeling stage then associates a probability estimate with each binary number used for arithmetic write code based on the previously encoded binary numbers and context information. The corresponding decoder has the same available information and can reproduce the same probability estimate for arithmetic decoding.
[0013] However, arithmetic decoding is known to be a highly sequential process that is almost impossible to parallelize. The decoding speed of the CABAC decoder is therefore limited by its serial coding process.
[0014] Given the above, it is necessary to establish the concepts of coding and decoding so that several decoders can operate in parallel to decode different parts of a single bitstream, which leads to improved decoding speed.
[0015] Therefore, the objective of this invention is to provide an encoding concept that is more efficient in terms of decoding speed. This objective is achieved through the subject matter of the independent claims in this application.
[0016] Other advantageous aspects are the subject of the appended claims. Summary of the Invention
[0017] According to embodiments of the present invention, an arithmetic encoder is established for arithmetically encoding a sequence of information values into an arithmetic write-code bitstream. The arithmetic encoder is configured to: symbolize information values into a string of symbols to obtain a sequence of symbols; arithmetically encode the sequence of symbols by performing the following operations for each symbol: selecting a sub-interval among a plurality of sub-intervals subdivided according to the probability estimate of the corresponding symbol and defining the current version of the write-code state of the arithmetic encoder based on the symbol value of the corresponding symbol, so as to obtain an updated version of the write-code state of the arithmetic encoder defined by the selected sub-interval for encoding the next symbol in the sequence of symbols; and renormalizing the encoder intrinsic parameters defining the write-code state, such as parameters R and L, while continuing the bitstream; and providing entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be resumed backward from a predetermined entry point.
[0018] This embodiment is based on the finding that providing entry point information to the bitstream enables parallel arithmetic decoding, such as CABAC decoding, when different parts of a single bitstream are decoded, for example, by having several decoders operate in parallel. This leads to more efficient encoding and decoding concepts, and in particular, improved decoding speed.
[0019] According to an embodiment, the entry point information includes information about the write state of the arithmetic decoder, which appears in the arithmetic decoder when it decodes the bitstream up to a predetermined entry point. This allows the use of multiple decoders to parallelize decoding starting from several predetermined entry points.
[0020] According to an embodiment, the arithmetic encoder is configured to perform arithmetic decoding of the bitstream to determine information about the write state of the arithmetic decoder. As an example, arithmetic decoding can be performed after arithmetic encoding has been completed. Alternatively, arithmetic decoding can begin in parallel with arithmetic encoding, at a small inter-bit distance between the bit position where arithmetic encoding continues to append bits and the start of the bitstream where arithmetic decoding begins.
[0021] According to an embodiment, the write state of the arithmetic decoder is defined by internal decoder parameters, including an interval width parameter indicating the width of the interval and a pointer pointing to the interval. The information about the write state of the arithmetic decoder includes the value of the pointer, for example, the value is adopted by the pointer at a predetermined entry point.
[0022] According to an embodiment, the arithmetic encoder is configured to perform arithmetic decoding of the bitstream and set the value of a pointer contained in information about the write state of the arithmetic decoder to be equal to the current value represented by the pointer itself as it proceeds through the arithmetic decoding of the bitstream up to a predetermined entry point.
[0023] According to an embodiment, the write state of the arithmetic decoder is defined by internal decoder parameters, including an interval width parameter indicating the width of the interval and a pointer to the interval. The information about the write state of the arithmetic decoder includes the value of the interval width parameter, for example, the value is adopted from the interval width parameter at a predetermined entry point.
[0024] According to an embodiment, the arithmetic encoder is configured to perform arithmetic decoding of a bitstream, and sets the value of the interval width parameter, contained in information about the write state of the arithmetic decoder, to be equal to the current value exhibited by the interval width parameter itself as during arithmetic decoding of the bitstream up to a predetermined entry point. Alternatively, the arithmetic encoder is configured to set the value of the interval width parameter, contained in information about the write state of the arithmetic decoder, to be equal to the current value exhibited by the interval width parameter itself as during arithmetic encoding of a symbol sequence up to a predetermined entry point.
[0025] According to an embodiment, the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval. Information regarding the write state of the arithmetic decoder includes the value of the pointer, for example, a value adopted by the pointer at a predetermined entry point, but does not include the value of the interval width parameter. In this embodiment, the arithmetic encoder is configured to set the value of the interval width parameter, contained in the information regarding the write state of the arithmetic decoder, to a predetermined value, and to use the predetermined value of the interval width parameter when resuming arithmetic encoding of the symbol sequence backward from the predetermined entry point. Alternatively, in this embodiment, the arithmetic encoder is configured to initially interrupt the arithmetic encoding of the symbol sequence by performing arithmetic encoding on symbols with predetermined symbol values immediately preceding the predetermined entry point, and then resuming arithmetic encoding of the symbol sequence backward from the predetermined entry point, and setting the value of the interval width parameter, contained in the information regarding the write state of the arithmetic decoder, to a value equal to the current value of the interval width parameter itself as it represents during arithmetic encoding of the symbol sequence up to the predetermined entry point, the symbol sequence including symbols with predetermined symbol values.
[0026] According to an embodiment, the entry point information includes a bit stream pointer pointing to a predetermined bit in the bit stream, which will be read next after the arithmetic decoding of the bit stream is resumed from the predetermined entry point.
[0027] According to an embodiment, a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the beginning of the bitstream (e.g., the front end from which the bitstream is decoded).
[0028] According to an embodiment, a bitstream pointer pointing to a predetermined bit in the bitstream signals in the bitstream an offset relative to the end of a string of leading bits in the bitstream, and the write state of the arithmetic decoder (e.g., a pointer to an interval) for performing arithmetic decoding of the bitstream is initialized based on the offset.
[0029] According to an embodiment, entry point information allows for the recovery of arithmetic decoding of the bitstream backward from more than one entry point, and a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a previous entry point. For example, the entry point information contains more than one information instance, i.e., one information instance per entry point. Alternatively, the bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a predefined bitstream position associated with the predetermined entry point. For example, the nth predefined bitstream position is associated with the nth entropy point; the predefined bitstream positions may be equidistant from each other.
[0030] According to an embodiment, the arithmetic encoder is configured to locate predefined bitstream positions as points between consecutive values in a value sequence (in other words: syntactically) or by counting the bits of the bitstream (or in other words: at the bit level).
[0031] According to an embodiment, a bit stream pointer pointing to a predetermined bit in the bit stream is stored in units of bits and / or integer multiples of bits n, where n>1, and for example n=8.
[0032] According to an embodiment, a signal is sent in the bit stream to notify the bit position of the previously entered point in the bit stream.
[0033] According to an embodiment, the bitstream pointer is signaled in the bitstream in a different manner than another bitstream pointer included in the entry point information for pointing to another predetermined bit in the bitstream, which is to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0034] According to an embodiment, a variable-length code is used to signal the bit stream pointer in the bit stream.
[0035] According to an embodiment, exponential Golomb code, preferably unsigned exponential Golomb code, is used to signal the bit stream pointer in the bit stream.
[0036] According to an embodiment, the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream signals the information in the bit stream in the form of the difference between the offset of the previous entry point relative to the previous entry point and the offset of the previous entry point relative to another entry point before the previous entry point.
[0037] According to an embodiment, signed exponential Golomb codes are used to signal the bitstream pointer in the bitstream.
[0038] According to an embodiment, unsigned exponential Golomb codes are used to signal the bit position of the previously entered point in the bit stream.
[0039] According to an embodiment, the exponential Golomb code parameter used for the exponential Golomb code is a value of 11.
[0040] According to an embodiment, signed exponential Golomb codes are used to signal the bitstream pointer in the bitstream.
[0041] According to an embodiment, the exponential Golomb code parameter used for the exponential Golomb code is a value of 7.
[0042] According to an embodiment, an arithmetic encoder is configured to use context-adaptive arithmetic write coding for arithmetic encoding of a sequence of symbols, including: for context-adaptive encoded symbols in the symbol sequence, selecting a context model from a plurality of context models, each of the plurality of context models having an associated probability estimate; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously encoded symbols in the symbol sequence. Entry point information indicates a predetermined probability estimate for the corresponding predetermined context model for each of one or more predetermined context models. The arithmetic encoder is configured to use the predetermined probability estimates to recover the adaptation of the probability estimates of the plurality of context models relative to the respective predetermined context models.
[0043] According to an embodiment, an arithmetic encoder is configured to use context-adaptive arithmetic write coding for arithmetic coding of a sequence of symbols, including: for a context-adaptive coded symbol in the sequence of symbols, selecting a context model from a plurality of context models, each of the plurality of context models having an associated probability estimate; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously encoded symbols in the sequence of symbols. The arithmetic encoder is configured to set the probability estimate of the corresponding predetermined context model at a predetermined entry point to a default state for each of one or more predetermined context models, and the arithmetic encoder is configured to use the default state to recover the adaptation of the probability estimates of the plurality of context models relative to the corresponding predetermined context model. Alternatively, in this embodiment, the arithmetic encoder is configured to set the probability estimate of the corresponding predetermined context model at a predetermined entry point to a saved state it exhibited under predetermined conditions during arithmetic coding of the sequence of symbols prior to the predetermined entry point for each of one or more predetermined context models, and the arithmetic encoder is configured to use the saved state to recover the adaptation of the probability estimates of the plurality of context models relative to the corresponding predetermined context model.
[0044] According to an embodiment, the arithmetic encoder is configured to use dependent quantization to derive a sequence of information values from an unquantized sequence of values using a state machine, wherein the entry point information includes the quantized state it exhibits in the state machine up to a predetermined entry point.
[0045] According to the embodiment, the symbol is a binary number, and the symbolization is binary.
[0046] According to an embodiment, the information value is a sequence of syntax elements representing a video.
[0047] According to the embodiment, the information value is the neural network parameter.
[0048] According to embodiments of the present invention, an arithmetic decoder is established for arithmetically decoding a sequence of information values from a bitstream. The arithmetic decoder is configured to: derive entry point information from the bitstream; use the entry point information to recover the arithmetic decoding of the bitstream backward from a predetermined entry point by arithmetically decoding a sequence of symbols from the bitstream for each symbol by: determining a sub-interval among a plurality of sub-intervals into which the current interval is subdivided according to the probability estimate of the corresponding symbol based on the current version of the write code state of the arithmetic decoder, and inferring the symbol value of the corresponding symbol based on the selected sub-interval; and renormalizing and updating the decoder internal parameters, such as R and V, that define the write code state by using the bitstream and the selected sub-interval to obtain an updated version of the write code state of the arithmetic decoder for decoding the next symbol in the symbol sequence; and derive the information value from the symbol sequence by desymbolization.
[0049] The arithmetic decoder according to this embodiment is based on the same considerations as the arithmetic encoder described above.
[0050] According to an embodiment, the arithmetic decoder is configured to use entry point information to determine the initial version of the write state of the arithmetic decoder, and to use the initial state to begin arithmetically decoding the bitstream forward from a predetermined entry point.
[0051] According to an embodiment, the write state of the arithmetic decoder is defined by the decoder's internal parameters, which include an interval width parameter indicating the width of the interval and a pointer pointing to the interval. The arithmetic decoder is configured to derive the starting value of the pointer from the entry point information. For example, the value is taken from the pointer at a predetermined entry point, and the bit stream is arithmetically decoded forward from the predetermined entry point using this value.
[0052] According to an embodiment, the write state of the arithmetic decoder is defined by the decoder's internal parameters, which include an interval width parameter indicating the width of the interval and a pointer to the interval. The arithmetic decoder is configured to derive the initial value of the interval width parameter from the entry point information. For example, the value is taken from the interval width parameter at a predetermined entry point, and the bit stream is arithmetically decoded forward from the predetermined entry point using this value.
[0053] According to an embodiment, the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval. The arithmetic decoder is configured to derive the starting value of the pointer from the entry point information, for example, the value is taken from the pointer at a predetermined entry point, and the bit stream is arithmetically decoded forward from the predetermined entry point using the value. The arithmetic decoder is also configured to set the value of the interval width parameter, which is contained in the information about the write state of the arithmetic decoder, to be equal to a predetermined value, and to use the predetermined value of the interval width parameter to recover the arithmetic decoding of the symbol sequence forward from the predetermined entry point.
[0054] According to an embodiment, the entry point information allows for the resumption of arithmetic decoding of the bitstream from more than one entry point, and the arithmetic decoder is configured to initially interrupt the arithmetic decoding of the symbol sequence at the subsequent predetermined entry point by performing arithmetic decoding on symbols with predetermined symbol values immediately preceding the subsequent predetermined entry point, and then resuming the arithmetic decoding of the symbol sequence from the subsequent predetermined entry point.
[0055] According to an embodiment, the arithmetic decoder is configured to derive a bitstream pointer to a predetermined bit in the bitstream from the entry point information, and to use the predetermined bit as the next bit to be read after resuming arithmetic decoding of the bitstream forward from the predetermined entry point.
[0056] According to an embodiment, a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the beginning of the bitstream (e.g., the front end from which the bitstream is decoded).
[0057] According to an embodiment, a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the end of a string of leading bits in the bitstream. The arithmetic decoder is configured to initialize the write state of the arithmetic decoder (e.g., a pointer to a range) when performing arithmetic decoding of the bitstream from the beginning of the bitstream backward based on the offset.
[0058] According to an embodiment, entry point information allows for the recovery of arithmetic decoding of the bitstream from more than one entry point, and bitstream pointers pointing to predetermined bits in the bitstream are signaled in the bitstream in the form of offsets relative to previous entry points or relative to predefined bitstream positions associated with the predetermined entry points. For example, the nth predefined bitstream position is associated with the nth entropy point; the predefined bitstream positions can be positioned equidistantly from each other.
[0059] According to an embodiment, the arithmetic decoder is configured to locate predefined bitstream positions as points between consecutive values in a sequence (in other words, syntactically) or by counting the bits of the bitstream (or, in other words, at the bit level).
[0060] According to an embodiment, a bit stream pointer pointing to a predetermined bit in the bit stream is stored in units of bits and / or integer multiples of bits n, where n>1, and for example n=8.
[0061] According to an embodiment, a signal is sent in the bit stream to notify the bit position of the previously entered point in the bit stream.
[0062] According to an embodiment, the bitstream pointer is signaled in the bitstream in a different manner than another bitstream pointer included in the entry point information for pointing to another predetermined bit in the bitstream, which is to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0063] According to an embodiment, a variable-length code is used to signal the bit stream pointer in the bit stream.
[0064] According to an embodiment, exponential Golomb code, preferably unsigned exponential Golomb code, is used to signal the bit stream pointer in the bit stream.
[0065] According to an embodiment, the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream signals the information in the bit stream in the form of the difference between the offset of the previous entry point relative to the previous entry point and the offset of the previous entry point relative to another entry point before the previous entry point.
[0066] According to an embodiment, signed exponential Golomb codes are used to signal the bitstream pointer in the bitstream.
[0067] According to an embodiment, unsigned exponential Golomb codes are used to signal the bit position of the previously entered point in the bit stream.
[0068] According to an embodiment, the exponential Golomb code parameter used for the exponential Golomb code is a value of 11.
[0069] According to an embodiment, signed exponential Golomb codes are used to signal the bitstream pointer in the bitstream.
[0070] According to an embodiment, the exponential Golomb code parameter used for the exponential Golomb code is a value of 7.
[0071] According to an embodiment, an arithmetic decoder is configured to use context-adaptive arithmetic decoding for arithmetic decoding of a symbol sequence, including: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from a plurality of context models, each of the plurality of context models having a probability estimate associated therewith; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously decoded symbols in the symbol sequence, wherein entry point information indicates a predetermined probability estimate of the corresponding predetermined context model for each of a set of one or more predetermined context models, and the arithmetic decoder is configured to use the predetermined probability estimates to recover the adaptation of the probability estimates of the plurality of context models relative to the corresponding predetermined context models.
[0072] According to an embodiment, an arithmetic decoder is configured to use context-adaptive arithmetic decoding for arithmetic decoding of a symbol sequence, including: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from a plurality of context models, each of the plurality of context models having a probability estimate associated therewith; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously decoded symbols in the symbol sequence, wherein the arithmetic decoder is configured to set the probability estimate of the corresponding predetermined context model at a predetermined entry point to a default state for each of one or more predetermined context models, and the arithmetic decoder is configured to use the default state to recover the adaptation of the probability estimates of the plurality of context models relative to the corresponding predetermined context model.
[0073] According to an embodiment, entry point information allows for the recovery of arithmetic decoding of the bitstream forward from more than one entry point, and the arithmetic decoder is configured to set the probability estimate of the corresponding predetermined context model at a subsequent predetermined entry point for each of one or more predetermined context models in a set, to the saved state it exhibited under predetermined conditions during the arithmetic decoding of the symbol sequence prior to the subsequent predetermined entry point, and the arithmetic decoder is configured to use the saved state to recover an adaptive probability estimate of multiple context models relative to the corresponding predetermined context model from the subsequent predetermined entry point forward. For example, here, the decoder may arithmetically decode the bitstream in parallel: performing a decoding once from the beginning using a signaled or default context state, and starting forward from the entry point once predetermined conditions (such as a certain number of information values have been decoded, etc.) are met.
[0074] According to an embodiment, the arithmetic decoder is configured to use dependent dequantization to derive a quantized value sequence from an information value sequence using a state machine, derive a quantized state from an entry point information, and, starting from the quantized state, recover dependent quantization backward from a predetermined entry point.
[0075] According to the embodiment, the symbol is a binary number, and desymbolization is debinding.
[0076] According to an embodiment, the information value is a sequence of syntax elements representing a video.
[0077] According to the embodiment, the information value is the neural network parameter.
[0078] According to embodiments of the present invention, a method for arithmetically encoding a sequence of information values into an arithmetic write-code bitstream is established, comprising: symbolizing the information values into a symbol string to obtain a symbol sequence; arithmetically encoding the symbol sequence by: for each symbol, subdividing a current interval that defines the current version of the write-code state of the arithmetic encoder according to a probability estimate of the corresponding symbol; selecting a sub-interval from a plurality of sub-intervals according to the symbol value of the corresponding symbol to obtain an updated version of the write-code state of the arithmetic encoder defined by the selected sub-interval for encoding the next symbol in the symbol sequence; and renormalizing the encoder intrinsic parameters that define the write-code state while continuing the bitstream; and providing entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be resumed backward from a predetermined entry point.
[0079] The method according to this embodiment is based on the same considerations as the encoding device described above. Furthermore, the disclosed embodiments may optionally be supplemented by any other features, functionalities, and details disclosed herein, in combination with the encoding device (individually and in combination).
[0080] According to an embodiment of the present invention, a method for arithmetically decoding an information value sequence from a bitstream includes: deriving entry point information from the bitstream; using the entry point information to recover arithmetic decoding of the bitstream backward from a predetermined entry point by performing the following operations for each symbol of the bitstream: determining the current version of the write code state of the arithmetic decoder, a sub-interval among a plurality of sub-intervals into which the current interval is subdivided according to the probability estimate of the corresponding symbol, and inferring the symbol value of the corresponding symbol based on the selected sub-interval; and obtaining an updated version of the write code state of the arithmetic decoder for decoding the next symbol in the symbol sequence by renormalizing and updating the decoder internal parameters that define the write code state using the bitstream and the selected sub-interval; and deriving information values from the symbol sequence by desymbolization.
[0081] The method according to this embodiment is based on the same considerations as the decoding device described above. Furthermore, the disclosed embodiments may optionally be supplemented by any other features, functionalities, and details disclosed herein, in combination with the decoding device (individually and in combination).
[0082] According to an embodiment of the present invention, a computer program with program code is established for performing any of the methods described above when run on a computer.
[0083] According to embodiments of the present invention, a bitstream generated using an arithmetic encoder of any of the embodiments described herein is established.
[0084] According to embodiments of the present invention, an arithmetic decoder for arithmetically decoding neural network parameters from a bitstream is established, configured to: arithmetically decode a symbol sequence from a bitstream using context-adaptive arithmetic decoding, comprising: for a context-adaptive decoded symbol in the symbol sequence, selecting a context model from a plurality of context models, each of the plurality of context models having a probability estimate associated therewith; performing arithmetic decoding on the context-adaptive decoded symbol using the selected context model; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously decoded symbols in the symbol sequence; deriving neural network parameters from the symbol sequence by desymbolization at the beginning of the bitstream and / or at one or more entry points within the bitstream; and for each of a set (possibly all, but possibly only a portion of multiple context models) of one or more context models, initializing a probability estimate associated with the corresponding context model based on context model information in the bitstream.
[0085] According to an embodiment, the arithmetic decoder is configured to adapt the probability estimates of multiple context models to actual symbol statistics by using previously decoded symbols in the symbol sequence to generate a probability estimate associated with the corresponding context model for each context model, based on symbols in the symbol sequence that have been previously context-adaptively decoded for the selected context model.
[0086] According to an embodiment, the arithmetic decoder is configured to: adapt the probability estimates of multiple context models to actual symbol statistics by using previously decoded symbols in a symbol sequence to derive a first hypothesis of probability estimation in a manner controlled by a first adaptive agility parameter to actual symbol statistics; and, at the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, set a first hypothesis and a first agility parameter associated with the corresponding context model based on context model information in the bitstream.
[0087] According to an embodiment, the arithmetic decoder is configured to: derive a second hypothesis for probability estimation by adapting a second adaptive agility, controllable by a second agility parameter, to the actual symbol statistics; adapt the probability estimates of multiple context models to the actual symbol statistics using previously decoded symbols in the symbol sequence, wherein the probability estimates are determined by the average of the first hypothesis and the second hypothesis; and, at the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, set a second hypothesis and a second agility parameter associated with the corresponding context model based on context model information in the bitstream.
[0088] According to an embodiment, the context model information in the bitstream includes table entry indexes of a table of quadruples used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, and the arithmetic decoder is configured to use the table entry indexes to select a quadruple of the table and to use a quadruple to set the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter.
[0089] According to an embodiment, the number of quadruples used to define the values of the first and second hypotheses, as well as the first and second agility parameters, is between 8 and 10, including 8 and 10. See the table below, where there are 9 lines / quadruples.
[0090] According to an embodiment, the quadruple used to define the values of the first and second hypotheses, as well as the first and second agility parameters, corresponds to one of three, four, or five mutually distinguishable settings for the first and second agility parameters. See the table below, where (1,4), (2,6), (0,5), or (3,5) exist.
[0091] According to an embodiment, the symbol is a binary number, and designed to debindified. The quadruples used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, include: the first three quadruples (e.g., 1,4,0,0, 1,4,95,1519, and 1,4,-41,-654). Based on all the first three quadruples, the first agility parameter is set to a first value, and the second agility parameter is set to a second value, the second value corresponding to an adaptive agility lower than the first value. Based on the first of the first three quadruples, the first hypothesis and the second hypothesis correspond to equal probability. The second of the first three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the first binary value is greater than the second binary value, and according to the third of the first three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the second binary value is greater than the first binary value; the second three quadruples (e.g., 2,6,95,1519, 2,6,30,482, and 2,6,-21,-337), according to all the second three quadruples, the first agility parameter is set to the third value, the third value corresponds to an adaptive agility lower than the first value and a greater adaptive agility than the second value, and the second agility parameter is set to the fourth value. The fourth value corresponds to an adaptive agility lower than the second value, and according to the first and second of the second three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the first binary value is greater than the second binary value, and according to the third of the second three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the second binary value is greater than the first binary value; two quadruples (e.g., 3,5,0,0 and 3,5,30,482), according to all two quadruples, the first agility parameter is set to the fourth value, the fourth value corresponds to an adaptive agility lower than the third value and an adaptive agility greater than the second value, and the fourth value corresponds to an adaptive agility lower than the third value and a value ... The agility parameter is set to a sixth value, which corresponds to an adaptive agility lower than the first value and an adaptive agility higher than the fourth value. According to the first of the two quadruples, the first hypothesis and the second hypothesis are equally probable. According to the second of the two quadruples, the first hypothesis and the second hypothesis are equally probable. For a single quadruple (e.g., 0, 5, 0, 0), the first agility parameter is set to a seventh value, which corresponds to an adaptive agility higher than the first value. According to the single quadruple, the first hypothesis and the second hypothesis are equally probable.
[0092] According to an embodiment, the symbols are binary numbers, and designification is debinding. The arithmetic decoder is configured to: for each of the first and second hypotheses, represent the corresponding hypothesis with a signed integer, and adapt the probability estimates of multiple context models to actual symbol statistics using previously decoded symbols in the symbol sequence, wherein the signed integer indicates equal probability when it is zero, indicates that the first binary value is more probable than the second binary value when it is greater than zero, and indicates that the second binary value is more probable than the first binary value when it is less than zero; for each context model, if the currently decoded binary number has the first binary value, the signed integer is increased, and if the currently decoded binary number has the second binary value, the signed integer is decreased, the amount of increase or decrease being controlled by a first agility parameter relative to the first hypothesis and by a second agility parameter relative to the second hypothesis, such that the larger the amount, the smaller the first and second agility parameters, respectively, wherein the probability estimate is determined by the average of the first and second signed integers.
[0093] According to an embodiment, the arithmetic decoder is configured to determine the amount of increase and decrease by using a transformation table.
[0094] According to an embodiment, the arithmetic decoder is configured to use the same transformation table for both the first and second hypotheses.
[0095] According to an embodiment, the arithmetic decoder is configured to determine the amount of increase and decrease by using a transformation table, wherein the power depends on a first adaptive parameter and a second adaptive parameter, respectively, at entries indexed by a table index determined by a signed integer, and the transformation step size is divided by a power of 2.
[0096] According to an embodiment, the signed integer is represented by a two's complement representation with n bits, where n is larger for the second hypothesis than for the first hypothesis (8 and 12 in the examples described in detail below); that is, the "scale" of the second hypothesis is larger / fineer than that of the first hypothesis, so that agility is reduced if the conversion step size is the same, wherein the arithmetic decoder is configured to divide the signed integer by 2 n-m (on the one hand) and 2 m-1(On the other hand) (in the example described in detail below, m = 5) the transformation table is looked up at the entry of the sum index to obtain the transformation step size, which is then divided by a power of 2 (therefore, the adaptive step size for determining adaptive agility is determined by the agility parameter), while the amount of increase and decrease is determined by using the transformation table, where the affine lines of the powers (4 + shift0 and shift1, respectively) depend on the corresponding first and second adaptation parameters, where the transformation step size determines the amount. The dependency allows the agility to be the same between the first and second hypotheses if the first and second agility parameters are the same; above this is done by "4 +", i.e., by adding the difference n between the first and second hypotheses to the agility parameter of the first hypothesis.
[0097] According to an embodiment, the conversion step size is stored in an entry of the conversion table and is monotonically increased or decreased.
[0098] According to embodiments of the present invention, an arithmetic encoder is established for arithmetically encoding neural network parameters into a bitstream, configured to: derive a symbol sequence from neural network parameters by symbolization; arithmetically encode the symbol sequence into a bitstream using context-adaptive arithmetic coding, including: for context-adaptive encoded symbols in the symbol sequence, selecting a context model from a plurality of context models, each of the plurality of context models having a probability estimate associated therewith; and arithmetically encoding the context-adaptive encoded symbols using the selected context model; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously encoded symbols in the symbol sequence; and at the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, initializing the probability estimate associated with the corresponding context model based on context model information signaled in the bitstream.
[0099] According to an embodiment, the arithmetic encoder is configured to adapt the probability estimates of multiple context models to actual symbol statistics by using previously encoded symbols in the symbol sequence to generate a probability estimate associated with the corresponding context model for each context model, based on symbols in the symbol sequence that have been previously context-adaptively encoded for the corresponding context model.
[0100] According to an embodiment, the arithmetic encoder is configured to: derive a first hypothesis for probability estimation by adapting the probability estimates of multiple context models to the actual symbol statistics in a manner controllable by a first adaptive agility parameter; adapt the probability estimates of multiple context models to the actual symbol statistics using previously encoded symbols in the symbol sequence; and, at the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, set a first hypothesis and a first agility parameter associated with the corresponding context model based on context model information signaled in the bitstream.
[0101] According to an embodiment, the arithmetic encoder is configured to: derive a second hypothesis for probability estimation by adapting a second adaptive agility, controllable by a second agility parameter, to the actual symbol statistics, and to form an average of the first hypothesis and the second hypothesis; adapt the probability estimates of multiple context models to the actual symbol statistics using previously encoded symbols in the symbol sequence; and, at the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, set a second hypothesis and a second agility parameter associated with the corresponding context model based on context model information signaled in the bitstream.
[0102] According to an embodiment, the context model information in the bitstream includes a table entry index of a table of quadruples used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, and the arithmetic encoder is configured to use the table entry index to select a quadruple of the table and to use a quadruple to set the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter.
[0103] According to an embodiment, the number of quadruples used to define the values of the first and second hypotheses, as well as the first and second agility parameters, is between 8 and 10, including 8 and 10. See the table below, where there are 9 lines / quadruples.
[0104] According to an embodiment, the quadruple used to define the values of the first and second hypotheses, as well as the first and second agility parameters, corresponds to one of three, four, or five mutually distinguishable settings for the first and second agility parameters. See the table below, where (1,4), (2,6), (0,5), or (3,5) exist.
[0105] According to an embodiment, the quadruples used to define the values of the first hypothesis and the second hypothesis, as well as the values of the first agility parameter and the second agility parameter, include: the first three quadruples (e.g., 1,4,0,0, 1,4,95,1519, and 1,4,-41,-654), based on all the first three quadruples, the first agility parameter is set to a first value, the second agility parameter is set to a second value, the second value corresponds to an adaptive agility lower than the first value, and based on the first of all the first three quadruples, the first hypothesis and the second hypothesis correspond to equal probability; based on the second of all the first three quadruples, the first... The assumptions and second assumptions correspond to a higher probability for the first binary value than the second binary value, and based on the third of all the first three quadruples, the first and second assumptions correspond to a higher probability for the second binary value than the first binary value; the second three quadruples (e.g., 2,6,95,1519, 2,6,30,482, and 2,6,-21,-337), based on all the second three quadruples, the first agility parameter is set to a third value, the third value corresponds to an adaptive agility lower than the first value and a greater adaptive agility than the second value, and the second agility parameter is set to a fourth value, the fourth value corresponding to... For an adaptive agility lower than the second value, and based on the first and second of the second three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the first binary value is greater than the second binary value, and based on the third of the second three quadruples, the first hypothesis and the second hypothesis correspond to a probability that the second binary value is greater than the first binary value; two quadruples (e.g., 3,5,0,0 and 3,5,30,482), based on all two quadruples, the first agility parameter is set to a fourth value, the fourth value corresponding to an adaptive agility lower than the third value and an adaptive agility greater than the second value, and the second agility The attribute parameter is set to a sixth value, which corresponds to an adaptive agility lower than the first value and an adaptive agility higher than the fourth value. According to the first of the two quadruples, the first hypothesis and the second hypothesis are equally probable. According to the second of the two quadruples, the first hypothesis and the second hypothesis are equally probable. For a single quadruple (e.g., 0, 5, 0, 0), the first agility parameter is set to a seventh value, which corresponds to an adaptive agility higher than the first value. According to the single quadruple, the first hypothesis and the second hypothesis are equally probable.
[0106] According to an embodiment, the symbols are binary numbers and symbolized to binary, and the arithmetic encoder is configured to: for each of the first and second hypotheses, represent the corresponding hypothesis with a signed integer, and adapt the probability estimates of multiple context models to actual symbol statistics using previously encoded symbols in the symbol sequence, wherein the signed integer indicates equal probability when it is zero, indicates that the first binary value is more probable than the second binary value when it is greater than zero, and indicates that the second binary value is more probable than the first binary value when it is less than zero; for each context model, if the currently encoded binary number has the first binary value, the signed integer is increased, and if the currently encoded binary number has the second binary value, the signed integer is decreased, the amount of increase or decrease being controlled by a first agility parameter relative to the first hypothesis and by a second agility parameter relative to the second hypothesis, such that the larger the amount, the smaller the first agility parameter and the second agility parameter, respectively, wherein the probability estimate is determined by the average of the first signed integer and the second signed integer.
[0107] According to an embodiment, the arithmetic encoder is configured to determine the amount of increase and decrease by using a transformation table.
[0108] According to an embodiment, the arithmetic encoder is configured to use the same transformation table for both the first and second hypotheses.
[0109] According to an embodiment, the arithmetic encoder is configured to determine the amount of increase and decrease by using a transformation table, whereby the transformation step size is obtained by looking up the transformation table at the entry indexed by a table index determined by a signed integer and dividing the transformation step size by a power of 2, wherein the power depends on a first adaptive parameter and a second adaptive parameter, respectively, and the transformation step size determines the amount.
[0110] According to an embodiment, the signed integer is represented by a two's complement representation with n bits, where n is larger for the second hypothesis than for the first hypothesis (8 and 12 in the examples described in detail below; that is, the "scale" of the second hypothesis is larger / fineer than that of the first hypothesis, so that agility is reduced if the transformation step size is the same), wherein the arithmetic encoder is configured to determine the amount of increase and decrease by using a transformation table, specifically by dividing the signed integer by 2. n-m (on the one hand) and 2 m-1(On the other hand) (in the example described in detail below, m = 5) the transformation table is looked up at the entry of the sum index to obtain the transformation step size, which is then divided by a power of 2 (therefore, the adaptive step size that determines the adaptive agility is determined by the agility parameter), the power being affinely (4 + shift0 and shift1 respectively) depending on the corresponding first and second adaptive parameters, where the transformation step size is determined. The dependency allows the agility to be the same between the first and second hypotheses if the first and second agility parameters are the same; above this, it is done by "4 +", i.e., by adding the difference n between the first and second hypotheses to the agility parameter of the first hypothesis.
[0111] According to an embodiment, the conversion step size is stored in an entry of the conversion table and is monotonically increased or decreased.
[0112] Arithmetic encoders, arithmetic decoders, arithmetic encoding methods, arithmetic decoding methods, computer programs for implementing these methods, arithmetic encoders for arithmetic encoding neural network parameters, and bitstreams may optionally be supplemented individually and in combination by any of the features, functionalities, and details disclosed herein (in the full document). Attached Figure Description
[0113] The preferred embodiments of this application are illustrated below with reference to the figures, wherein:
[0114] Figure 1 A flowchart of a method 100 for encoding according to an embodiment is shown;
[0115] Figure 2 A flowchart of a decoding method 200 according to an embodiment is shown;
[0116] Figure 3 The illustration shows a schematic representation of the encoding and decoding parameters that occur during the encoding and decoding of an arithmetic bitstream according to an embodiment, illustrating different possibilities regarding the content that can be signaled as entry point information in the bitstream. Detailed Implementation
[0117] exist Figure 1 The presents a method 100 for arithmetically encoding a sequence of integer values into an arithmetic write code bitstream according to an embodiment.
[0118] The method includes symbolizing the information value into a symbol string at step 101 to obtain a symbol sequence, and arithmetically encoding the symbol sequence at step 102.
[0119] Arithmetic coding includes, in step 103, subdividing the current interval for each symbol based on the probability estimate of the corresponding symbol, the current interval defining the current version of the write code state of the arithmetic encoder. Arithmetic coding further includes, in step 104, selecting a sub-interval from a plurality of sub-intervals based on the symbol value of the corresponding symbol. This yields an updated version of the write code state of the arithmetic encoder defined by the selected sub-interval, which is further used to encode the next symbol in the symbol sequence. Arithmetic coding further includes, in step 105, renormalizing the encoder intrinsic parameters defining the write code state while continuing the bitstream.
[0120] After performing arithmetic encoding, method 100 further provides entry point information to the bitstream at step 106, thereby allowing arithmetic decoding of the bitstream to be resumed from the predetermined entry point.
[0121] However, it should be noted that method 100 may optionally be supplemented individually or in combination by any of the features, functionality and details disclosed herein.
[0122] exist Figure 2 The presents a method 200 for arithmetically decoding a sequence of information values from a bit stream according to an embodiment.
[0123] The method includes: at step 201, deriving entry point information from the bitstream; and at step 202, using the entry point information to recover arithmetic decoding of the bitstream forward from a predetermined entry point by arithmetically decoding the symbol sequence from the bitstream for each symbol of the bitstream. Arithmetic decoding of the symbol sequence from the bitstream includes, at step 203, determining the current version of the write code state of the arithmetic decoder and a sub-interval among a plurality of sub-intervals into which the current interval is subdivided based on the probability estimate of the corresponding symbol. Arithmetic decoding further includes, at step 204, inferring the symbol value of the corresponding symbol based on the selected sub-interval. Arithmetic decoding further includes, at step 205, renormalizing and updating the decoder internal parameters defining the write code state using the bitstream and the selected sub-interval to obtain an updated version of the write code state of the arithmetic decoder for decoding the next symbol in the symbol sequence.
[0124] After performing arithmetic decoding, method 200 further derives the information value from the symbol sequence by desymbolization at step 206.
[0125] However, it should be noted that method 200 may optionally be supplemented individually or in combination by any of the features, functionality and details disclosed herein.
[0126] Figure 3 This is a schematic representation of encoding and decoding parameters generated during encoding and decoding, illustrating information about the entry points in the bitstream that can be signaled for use in the decoding process.
[0127] At the beginning of encoding and decoding, at the beginning of the bitstream, or at the very beginning of the bitstream from which it will be fully decoded, the following variables can be initialized by default: the interval width R at both the encoder and decoder, the interval offset L at the encoder, the state of the context model at both the encoder and decoder (optionally, if context adaptation applies), and optionally, the quantization state (if dependent quantization is used). A pointer V can be derived from the first few bits of the bitstream by the decoder. Parameters are generated from the beginning inwards, and the decoder must execute the entire decoding process to know which states occur at any entry point. According to an embodiment, the encoder is responsible for generating this information and sending it along with the bitstream to the decoder so that the decoder can begin decoding directly at one of the entry points.
[0128] Each entry point in the bitstream can be viewed as a snapshot of the state of the arithmetic encoder, or more precisely, a snapshot of the arithmetic decoding process performed in the encoder to simulate the state at the encoder. Specifically, the entry points of the bitstream generally indicate snapshots of the state of the context model that occurs during decoding of the associated bitstream or of the quantization state of the decoding process. The indicated variables are therefore signaled in the bitstream for predetermined entry points. This signaling can be in the header preceding the bitstream, after the bitstream, or inserted in between (such as at the entry point itself). Parts of the parameters required for decoding can be set synchronously at the entry point in both the encoder and decoder, eliminating the need to include their related information in the entry point information.
[0129] The following describes an embodiment for arithmetically encoding a sequence of information values into an arithmetic write-code bitstream (e.g., a bitstream containing encoded neural network data, such as an NNR bitstream). Table 1 shows, in pseudocode, entry point information that allows the arithmetic decoding of the bitstream to be recovered backward from a predetermined entry point. Naturally, the details set forth herein also demonstrate the corresponding arithmetic decoding of the resulting bitstream.
[0130] Table 1
[0131]
[0132] according to Figure 1Information values are symbolized into symbol strings to obtain a symbol sequence, which is arithmetically encoded for each symbol by performing the following operations: selecting a sub-interval from the current interval of the current interval that defines the write state of the arithmetic encoder, which is subdivided into multiple sub-intervals based on the probability estimate of the corresponding symbol, the selection being based on the symbol value of the corresponding symbol, so as to obtain an updated version of the write state of the arithmetic encoder defined by the selected sub-interval for encoding the next symbol in the symbol sequence; and renormalizing the encoder intrinsic parameters that define the write state while continuing the bit stream.
[0133] It provides entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be resumed from a predetermined entry point.
[0134] As shown in Table 1, the entry point information that allows for the forward recovery of arithmetic decoding of the bitstream from a predetermined entry point includes:
[0135] `cabac_offset_list` specifies a list of variables `IvlOffset` to be used to initialize the value of the variable `IvlOffset` at the beginning of the entry point. It is exemplarily shown as being written as an 8-bit unsigned integer, but it can also be written in different ways; in this example, the variables `IvlCurrRange` and `IvlOffset` are used to define the state or writing state of the arithmetic decoder engine; that is, the writing state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of the interval and a pointer to the interval; here, `IvlCurrRange` represents the width of the interval, and `IvlOffset` indicates the pointer to the interval.
[0136] `dq_state_list` specifies a list of values to be used to initialize the variable `stateId` at the beginning of the entry point. It is exemplarily shown as being written as a 3-bit unsigned integer, but it can also be written in different ways; `stateId` is used here as a variable to represent the state of the state machine used to perform dependent quantization.
[0137] bit_offset_delta1 specifies the first element of the list BitOffsetList. It is exemplarily shown as using unsigned 11th-order exponent Golomb code, but it can also be written in different ways;
[0138] bit_offset_delta2 specifies the element of the list BitOffsetList excluding the first element as the difference between the previous element of the list BitOffsetList. It is exemplarily shown as a code written using signed 7th-order exponent Golomb code;
[0139] The variable BitOffsetList is a list of bit offsets to be used to set the bitstream pointer position at the start of the entry point.
[0140] More precisely, Table 1 pertains to an embodiment where dependent quantization is used to derive an information value sequence from an unquantized value sequence (i.e., using a state machine), where the entry point information includes its own quantization state exhibited in the state machine up to a predetermined entry point, i.e., stateId.
[0141] The way to start arithmetic decoding the bitstream forward from a predetermined entry point using the entry point information in Table 1 is illustratively shown in Table 2 in pseudocode form.
[0142] Table 2
[0143]
[0144] In Table 2, the variable entryPointOffset is used to indicate whether there is an entry point for decoding, and if an entry point exists, to indicate whether there is an entry point offset. If the index i does not point to the first position of an entry point, GetEntryPointIdx(tensorDimensions[], i, scan) returns -1. If the index i points to the first position of an entry point, it returns the entry point index within the tensor.
[0145] If the index i does not point to the first position of an entry point, GetEntryPointIdx(tensorDimensions[], i, scan) returns -1. If the index i points to the first position of an entry point, it returns the entry point index within the tensor. To determine the position and index of the entry point, the following applies:
[0146] Set the variable w to Prod(tensorDimensions) / tensorDimensions[0]
[0147] Set the variable epIdx to i / (w*(4<<scan)) - 1
[0148] If i > 0 and i % (w*(4<<scan)) equals 0, then the index i points to the first position of an entry point, and the entry point index equals epIdx.
[0149] Otherwise, the index i does not point to the first position of an entry point.
[0150] dq_flag specifies whether the quantization method is dependent scalar quantization or uniform quantization. dq_flag equal to 0 indicates the use of the uniform quantization method. dq_flag equal to 1 indicates the use of the dependent scalar quantization method. If dq_flag does not exist, it is inferred to be 0.
[0151] `set_bit_pointer` sets the position of the bit stream pointer. `init_prob_est_param()` calls the initialization process for the probability estimation parameters.
[0152] The scan_order parameter specifies the block scan order based on the following table, which has more than one dimension:
[0153] -0: No block scan
[0154] -1: 8x8 block
[0155] -2: 16x16 blocks
[0156] -3: 32x32 blocks
[0157] -4: 64x64 blocks
[0158] That is, in the examples provided in Tables 1 and 2, the entry point information includes a bitstream pointer, i.e., `set_bit_pointer`, pointing to a predetermined bit in the bitstream that will be read next after the arithmetic decoding of the bitstream is resumed from the predetermined entry point. Here, the entry point information allows the arithmetic decoding of the bitstream to be resumed from more than one entry point (i.e., for the NumBlockRowsMinus1 entry point). When scanning the tensor column by column or regularly by fully scanning a dimension and then scanning the next column along that dimension (and so on), the entry point can be limited to being located between column changes. The bitstream pointer pointing to the predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the previous entry point, as can be obtained from the addition BitOffsetList[j] = BitOffsetList[j-1] + bit_offset_delta2 in Table 1.
[0159] At each entry point j, the write code state is initialized using cabac_offset_list[j] and dq_state_list[j] relative to the range pointer and the dependent quantization state, respectively. According to this embodiment, the range width is set to a constant or predefined fixed value at each entry point, i.e., a default value, which is 256 in this example. In this example, both IvlCurrRange and IvlOffset are 16-bit buffer precision. However, the latter's explicit bit precision is only an example and can be changed.
[0160] 4. Other embodiments and aspects
[0161] In the following, other aspects and embodiments of the invention will be described that may be used individually or in combination with any other embodiments disclosed herein.
[0162] Furthermore, the embodiments disclosed in this section may optionally be supplemented individually or in combination by any other features, functionalities, and details disclosed herein.
[0163] The entry point structure for arithmetic write code according to an embodiment of the present invention is further described.
[0164] background
[0165] Context-based Adaptive Binary Arithmetic Write Code (CABAC) is a method for encoding and decoding sequences of symbols. The binaryization stage converts each symbol in such a sequence into a sequence of one or more binary symbols (binary numbers), and arithmetically encodes the concatenation of these binary sequences into a bitstream. The context modeling stage associates probability estimates with each binary number used for arithmetic write code based on previously encoded binary numbers and contextual information. The decoder has the same available information and can reproduce the same probability estimates for arithmetic decoding.
[0166] A Review of CABAC's Binary Transformation and Context Modeling Stages
[0167] Binarization and context modeling are highly application-dependent. For example, both the video compression standards H.265 / HEVC and H.266 / VVC use CABAC as their arithmetic coding engine, but they have very different binaryization and context modeling stages when tuning to the types of syntax elements that appear. However, most applications that use CABAC to maintain a set of so-called context models and binaryization and context modeling correspond to explicitly associating each binary number with a specific context model from this set. The context model is typically implemented as an inverse adaptive probability estimator that only considers the binary numbers previously associated with the context model.
[0168] The following sections review three examples of different concepts for implementing a context model according to embodiments of the present invention:
[0169]
[0170] Details about the implementation can be found in the corresponding resources in the line "comments".
[0171] Note: The committee draft of ISO / IEC 15938 Part 17 contains some incorrect equations in the description of the probability estimator, which need to be corrected as follows to produce a correct “NNR” context model implementation:
[0172] • In section 11.3.4.3.2.1, the equation “valMps=pStateIdx0+pStateIdx0>=0” must be replaced with “valMps=16*pStateIdx0+pStateIdx1>=0”.
[0173] • In section 11.3.4.3.2.1, the equation “ivlLpsRange=rps_table[(abs((pStateIdx0+pStateIdx1)>>7))+qRangeIdx]” must be replaced with “ivlLpsRange=rps_table[(abs((16*pStateIdx0+pStateIdx1)>>7))+qRangeIdx]”.
[0174] • In section 11.3.4.3.2.2, the equation “pStateIdx0+=sign*(transition_table[16+(sign*pStateIdx0>>3)]>>shift0)” must be replaced with “pStateIdx0+=sign*(transition_table[16+(sign*pStateIdx0>>3)]>>(4+shift0))”.
[0175] • In section 11.3.4.3.2.2, the equation “pStateIdx1+=sign*(transition_table[16+(sign*pStateIdx0>>7)]>>shift1)” must be replaced with “pStateIdx1+=sign*(transition_table[16+(sign*pStateIdx1>>7)]>>shift1)”.
[0176] According to embodiments of the invention, only variables representing the state of the context model are of interest, since the probability estimation process remains unchanged. It should be noted that the current embodiments of the invention can also be applied to other types of probability estimators not described herein.
[0177] Furthermore, in embodiments of the present invention, there may be binary numbers that are not associated with the context model, such as well-known bypass binary numbers or termination binary numbers.
[0178] The committee draft of ISO / IEC 15938 Part 17 provides a detailed review of the probability estimator according to embodiments of the present invention.
[0179] Each context model maintains, for example, four variables: shift0, shift1, pStateIdx0, and pStateIdx1. Variables pStateIdx0 and pStateIdx1 are 8-bit and 12-bit integers in two's complement representation, respectively.
[0180] The probability estimate for arithmetic encoding or decoding can be derived, for example, from pStateIdx0 and pStateIdx1 and from the width of the current write code interval ivlCurrRange of the arithmetic encoder or decoder (which is a value in the interval [256, 510]):
[0181] valMps=16*pStateIdx0+pStateIdx1>=0
[0182] qRangeIdx=ivlCurrRange&0xe0
[0183] rlps_table=[128,112,97,84,74,65,57,50,45,39,34,30,27,23,20,18,15,14,12,11,10,9,7,7,
[0184] 5,5,4,4,3,3,2,2,142,125,108,93,82,72,63,56,50,43,38,33,30,26,22,20,
[0185] 17,16,13,12,11,10,8,8,6,6,5,5,3,3,2,2,156,137,119,103,90,79,70,61,
[0186] 55,48,42,37,33,28,24,22,19,17,15,13,12,11,9,9,6,6,5,5,4,4,2,2,
[0187] 171,150,130,112,99,87,76,67,60,52,46,40,36,31,27,24,21,19,16,15,13,12,10,10,
[0188] 7,7,6,6,4,4,3,3,185,162,141,121,107,94,82,73,65,56,50,43,39,34,29,26,
[0189] 22,21,17,16,14,13,11,11,8,8,6,6,4,4,3,3,199,175,152,131,115,101,89,78,
[0190] 70,61,54,47,42,36,31,28,24,22,19,17,15,14,12,12,8,8,7,7,5,5,3,3,
[0191] 213,187,163,140,123,108,95,84,75,65,58,50,45,39,33,30,26,24,20,18,16,15,13,13,
[0192] 9,9,7,7,5,5,3,3,228,200,174,150,132,116,102,90,80,70,62,54,48,42,36,32,
[0193] 28,26,22,20,18,16,14,14,10,10,8,8,6,6,4,4]
[0194] ivlLpsRange=rps_table[(abs((16*pStateIdx0+pStateIdx1)>>7))+qRangeIdx]
[0195] The variable valMps represents the value of the high-probability sign (MPS), and the probability estimate of the low-probability sign (LPS) is given as p. LPS =ivlLpsRange / ivlCurrRange. Therefore, the probability estimate of a high-probability symbol is simply p. MPS =1-p LPS .
[0196] The probability Pr(bin==1) of the next binary number equal to 1 can be derived, for example, as follows:
[0197] If valMps == 1: Pr(bin == 1) = p MPS
[0198] Otherwise, (if valMps == 0): Pr(bin == 1) = p LPS
[0199] It should be noted that these probability estimates do not appear directly in the encoder or decoder, because arithmetic encoding or decoding only requires the sub-interval widths associated with the MPS and LPS.
[0200] At the start of encoding, both pStateIdx0 and pStateIdx1 are set to 0, approximately corresponding to p LPS =0.5.
[0201] After, for example, updating the encoding or decoding of a binary number using variables shift0 and shift1 with values binVal, pStateIdx0, and pStateIdx1 according to the following equation:
[0202] transition_table=[2512,2288,2064,1840,1616,1392,1168,944,720,560,46 4,368,272,208,144,80,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0]
[0203] sign = 2 * binVal - 1
[0204] pStateIdx0+=sign*(transition_table[16+(sign*pStateIdx0>>3)]>>(4+shift0))
[0205] pStateIdx1+=sign*(transition_table[16+(sign*pStateIdx1>>7)]>>shift1)
[0206] As can be seen from the equation, larger values for shift0 or shift1 result in smaller modifications to the values of pStateIdx0 or pStateIdx1, respectively. This corresponds to smaller changes in the resulting probability estimates, while smaller values correspond to larger changes. Therefore, shift0 and shift1 can be considered as agility parameters controlling the update agility of pStateIdx0 and pStateIdx1. Typical values for (shift0, shift1) are, for example, (1,4), (0,0), (0,5), (1,1), (1,2), (2,4), (2,6), (3,4), or (3,5), and their values depend on the statistical properties of the sequence of binary numbers to be encoded, with shift0 and shift1 being the most suitable values.
[0207] The underlying principle is called the Exponentially Weighted Moving Average (EWMA).
[0208] A further description of the arithmetic coding engine of the CABAC (M-coder) according to an embodiment of the present invention is provided.
[0209] The M coder according to an embodiment maintains two unsigned B-bit integer variables V and R in the decoder. Typically, B is set to 9, but other choices are possible. At the start of decoding, V is initialized with the first B bits of the arithmetic-coded bitstream (advancing the bitstream pointer by B bits), and R is set to an initial value, such as, for example, 2 B -2. It should be noted that the bitstream may contain other bits before the start of arithmetic coding, such as high-level syntax. R represents the width of the current coding interval, and it can only contain values in the interval [2 B -1 , 2 B -1]. The coding interval is given by [0, R], and V represents a pointer to the coding interval, i.e., V < R must always hold. For the decoding of a binary number b, well-known techniques, such as context modeling and probability estimation, such as, for example, exponentially weighted moving average (EWMA), are used to estimate the probabilities of the two possible values of b. Based on the estimated probabilities associated with the binary number b, two sub-intervals I L = [0, R L [ and I R = [R L , R], where I L is associated with one possible value of the binary number b, and I R is associated with the other possible value of the binary number b. For example, I R is typically associated with the less probable symbol (LPS) based on the estimated probabilities, while I L is associated with the more probable symbol (MPS).
[0210] For example, the decoding of a binary number is performed as follows (the enumerated list corresponds to ordered steps):
[0211] If V < R L :
[0212] 1. The symbol value associated with I L is the decoded value of b.
[0213] 2. Set R to R L .
[0214] Otherwise, (V >= R L ):
[0215] 1. The symbol value associated with I R is the decoded value of b.
[0216] 2. Set R to R - R L .
[0217] 3. Set V to V - R L .
[0218] If subsequently R < 2B-1 Then, renormalization is performed as follows:
[0219] 1. Set R to 2*R
[0220] 2. Set V to 2*V + ReadOneBit()
[0221] 3. If R < 2 B-1 If yes, continue with step 1 (otherwise, perform renormalization).
[0222] The function ReadOneBit() returns the next bit in the bit stream and moves the bit stream pointer forward by 1 bit.
[0223] The above binary decoding procedure is also known as the regular write mode. In addition, there are well-known bypass write modes and terminated binary write modes.
[0224] The concepts according to embodiments of the present invention are further described.
[0225] Arithmetic decoding is a sequential process that is almost impossible to parallelize. The concept of embodiments of the invention introduces a method for enabling decoders to begin decoding at predefined positions in the bitstream by defining so-called entry points. In this way, several decoders can operate in parallel, thereby decoding different portions of a single bitstream (starting at different entry points).
[0226] Entry point
[0227] The entry point can be viewed as a snapshot of the state of the arithmetic decoder before decoding a specific binary number. That is, it consists of the following variables:
[0228] aR
[0229] bV
[0230] c. A pointer to the next bit in the bit stream
[0231] d. The state of the CABAC decoder (e.g., the state of the context model and other possible related variables, such as the state of the dependent quantization scheme).
[0232] This entry point will require B-1 bits for R (used to represent the interval [2]). B-1 ,2 B B bits are used for V, and the remaining bits are used to store c and d. To store c, in an embodiment, a variable-length code such as exponential Golomb code may be appropriate, as small pointer values will produce short binary codewords. However, storing d may require a huge number of bits, as there may be a large number of context models, and each context model may require several bits to represent its internal state.
[0233] Obviously, entry points can also be established for existing CABAC bitstreams in the embodiments without re-encoding the bitstream.
[0234] In a preferred embodiment, one or more entry points have been generated for the CABAC bitstream. For the first entry point, a pointer c to the next bit in the bitstream is stored as the difference between the bit position at the start of arithmetic decoding and the bit position of the first entry point.
[0235] In another preferred embodiment, this difference is further reduced by B (because the first B bits are loaded into V during the initialization of the arithmetic decoder).
[0236] In another preferred embodiment, all entry points after the first entry point (if any) store pointers to the next bit in the bitstream relative to the pointers c. to the next bit in the bitstream from the previous entry point. For example, the difference between the pointers c. to the next bit in the bitstream from the current entry point and the pointers c. to the next bit in the bitstream from the previous entry point is stored.
[0237] In another preferred embodiment, the integer value to be stored (e.g., given as the difference as described in the previous preferred embodiment) of the pointer c. indicating the next bit in the bit stream is encoded in the bit stream using k-order unsigned exponential Golomb code (which, for example, corresponds to the data type ue(k) as defined in the committee draft of ISO / IEC 15938, Part 17).
[0238] In another preferred embodiment, the pointer c. to the next bit in the bitstream involved in the calculation of the integer representing the next bit c. in the bitstream (as described in the previous preferred embodiment) is rounded down to a multiple of 8 before the calculation. The resulting difference is therefore also a multiple of 8 and can be divided by 8 to obtain the byte offset (rather than the bit offset). In addition, 3 extra bits are encoded in the entry point to indicate the bit position in the current byte of the current entry point.
[0239] In a preferred embodiment, encoding and decoding involve maintaining a well-known dependent quantization scheme for the state variable (such as, for example, in the committee draft for ISO / IEC 15938 Part 17). A fixed number of bits are stored along with each entry point to indicate the value of the dependent quantization state. For example, in the committee draft for ISO / IEC 15938 Part 17, a 3-bit variable indicating one of eight possible values for the dependent quantization state is stored.
[0240] The double differential signaling of the pointer c to the next bit in the bit stream according to the embodiment is further described.
[0241] In applications where the entry points are positioned approximately equidistantly in the bitstream, the difference between pointers c. to the next bit in the bitstream between adjacent entry points has approximately the same value. In this case, for all entry points except the first two, signaling the "difference of differences" of these bit positions may be more efficient. More precisely, consider three adjacent entry points ep1, ep2, and ep3 and the associated pointers c. to the next bit in the bitstream given as bitPos1, bitPos2, and bitPos3, respectively. Additionally, assume that bitPos1 < bitPos2 < bitPos3 holds. Then, for approximately equally spaced entry points ep1, ep2, and ep3, the differences d1 = bitPos2 - bitPos1 and d2 = bitPos3 - bitPos2 have approximately the same value. That is, the difference of differences d2 - d1 has a small value. Therefore, in a preferred embodiment, the position c. of the next bit in the bitstream for entry point ep3 is signaled as the "double difference" dd3 = d2 - d1. It should be noted that dd3 may now also be negative. Since the magnitude of dd3 tends to be smaller than the magnitude of d3, it is possible to signal it in the bitstream with fewer bits, for example, when using a signed exponential Golomb code.
[0242] In another preferred embodiment, the difference d1 indicating the position of the least significant bit in the bitstream c. having entry point ep2 is signaled as an unsigned exponential Golomb code with parameter k = 11.
[0243] In another preferred embodiment, the difference dd3 (represented as the "double difference" as discussed above) indicating the position c. of the next bit in the bitstream for entry point ep3 is signaled as a signed exponential Golomb code with parameter k = 7.
[0244] In another preferred embodiment, the differential and / or double difference values (as described above) indicating the position c. of the next bit in the bitstream are calculated based on entry points that are not encoded in the bitstream but are instead derived by the encoder and decoder at predetermined bit positions. For example, the first entry point ep1 is not signaled in the bitstream (instead, it is derived in the encoder and decoder) and is used to calculate the difference or double difference for signaling ep2.
[0245] Further describe entry points with encoder modifications according to embodiments of the present invention.
[0246] As discussed in the previous section, storing d. in the entry points may require a large number of bits. In this section, several concepts for reducing the size of the entry points by allowing encoder modifications are described.
[0247] The modifications to the state (d.) of the CABAC encoder and decoder according to the embodiments are further described.
[0248] According to the embodiment, the state d. of the CABAC encoder and decoder is set to a predefined value at the beginning of the entry point. Therefore, it is not necessary to store d. at the entry point. However, this can lead to a larger arithmetic-coded bitstream because the accuracy of the probabilistic modeling is reduced.
[0249] For example, the state of the CABAC encoder and decoder at the beginning of the entry point can be set according to one of the following rules (each according to the embodiment):
[0250] 1. The states of the CABAC encoder and decoder are reset to their default values.
[0251] 2. The state of the CABAC encoder and decoder is initialized using information signaled in the bitstream.
[0252] 3. The state of the CABAC encoder and decoder is set to the previously saved state of the CABAC encoder and decoder.
[0253] As previously mentioned, the states of the CABAC encoder and decoder can consist of a set of context models and other variables. It is often meaningful to apply different rules to different parts of the CABAC encoder and decoder states. For example, according to an embodiment, rule 1 may be applied to the context model, while not applying any rules may be more suitable for other variables, such as the state of the dependent quantization scheme. That is, other variables are stored along with the entry point. Or, in another example, according to an embodiment, rule 1 or rule 2 is applied to a first subset of the context model, while rule 2 or rule 3 is applied to a second (disjoint) subset of the context model.
[0254] An example based on rule 1 according to the embodiments is as follows:
[0255] Rule 1 is probably the simplest way to avoid needing to store d along with the entry point. However, this could also result in a substantially larger arithmetic writecode bitstream because the accuracy of the probabilistic modeling is greatly reduced.
[0256] An example based on rule 2 according to the embodiments is as follows:
[0257] Rule 2 may apply, for example, only to the context model, while other rules (or no rules) may apply to all other variables (if they exist) associated with the state of the CABAC encoder and decoder (e.g., the state of the dependent quantization scheme). For instance, the initialization of some or all context models may be signaled somewhere in the bitstream before the first entry point. At the beginning of each entry point, this initialization information is used to derive the initial state of each context model.
[0258] An example based on Rule 3 according to an embodiment is as follows:
[0259] For example, the storage and loading states of the context model are known, for example, from the context of wavefront parallel processing of the video compression standard H.265 / HEVC. The encoder and decoder store the state of the context model at a predefined location and make it available for loading these states at other predefined locations. This concept can be combined with the entry point concept, where the saved context model state is loaded at the start of the entry point.
[0260] Further describe the modification of the variable R in the CABAC encoder and decoder according to an embodiment.
[0261] The variable R is in the range [2 B-1 , 2 B -1]. Therefore, storing R in the entry point requires B - 1 bits (this is because there are 2 B -1 - 2 B-1 +1 = 2 B-1 values) in the interval. In an embodiment, signaling R in the entry point can be avoided by encoding and decoding a so-called pseudo-binary number before generating the entry point. This is done by using an encoding procedure for the rule binary number for which R L is set to 2 B-1 and selecting the symbol value associated with I L as the encoded or decoded symbol. It should be noted that this pseudo-binary number is only required when R > 2 B-1 . After this pseudo-binary number, the variable R is always 2 B-1 , and therefore, it does not need to be stored in the entry point, saving B - 1 bits. Since the pseudo-binary number is always a most probable symbol (MPS), it generates an average fraction of less than 1 bit in the bitstream, and the average fraction is less than the saved B - 1 bits. This technique also has an impact on the possible values of the variable V because V < R must always hold. Therefore, V < 2 B-1 also holds, and V can be signaled in the bitstream with B - 1 bits instead of B bits, saving another bit in the entry point.
[0262] In a preferred embodiment, R is set to 2 B-1 at the start of the entry point (in the encoder and decoder), and V is stored as a fixed-length variable with B - 1 bits.
[0263] Further describe the application of the entry point to compress a 2D array of values according to an embodiment of the present invention.
[0264] Several applications encode 2D arrays of values into bitstreams. For example, image or video compression schemes encode images represented as 2D arrays of samples, or compression schemes for neural network parameters reshape parameter tensors into 2D structures to encode the parameter values they contain. Such schemes typically apply block-segmentation techniques to the 2D array, and also restrict the order of the resulting blocks used for encoding or decoding. Furthermore, such schemes may contain lossy operations, such as quantization, and the decoded and reconstructed 2D arrays are not identical to the original 2D arrays, but are generally similar (e.g., visually similar in the case of video compression).
[0265] Consider, for example, a video or neural network parameter compression scheme that subdivides a 2D array (such as an image plane or a reshaping parameter tensor) into N×N blocks with a defined scan order, where the blocks are ordered in scan order to encode them into a bitstream. This scheme forms rows and columns of N×N blocks. For example, the order within a row could start with the leftmost block and proceed to the right. The order of rows could simply start with the top row and proceed downwards. This scan order is also known as raster scanning and may be desirable to allow the decoder to decode all rows in parallel. In this case, an entry point at the beginning of each row would be needed. However, it should be noted that in embodiments, the decoder may need information from adjacent blocks in order to be able to decode the current block. For example, video compression algorithms typically access information from adjacent blocks (e.g., the left or top) in order to be able to decode the current block. In this case, the decoder must further ensure that these blocks are decoded before the current block can be decoded.
[0266] Furthermore, parallel decoding may be suitable for some 2D arrays, but not necessarily for others. For example, it may be useful for large 2D arrays, but not necessary for small 2D arrays. In a preferred embodiment, the presence of an entry point for the 2D array is signaled in the bitstream.
[0267] In a preferred embodiment, the state of the context model (according to rule 3) is stored after the first block of each line. An entry point is generated at the beginning of each block line, where the state of the context model is set to the stored value as present after the encoding or decoding of the first block of the adjacent line above.
[0268] In another preferred embodiment, the state of the context model (according to rule 3) is stored after the first block of the first line. An entry point is generated at the beginning of each block line, where the state of the context model is set to the same value as that present after the encoding or decoding of the first block of the topmost line.
[0269] The signaling notification for shared context model initialization information for entry points according to an embodiment is further described.
[0270] Before CABAC decoding begins, the states of all context models must be set to predefined values. This can be done, for example, by using default values or by employing a more complex context model initialization procedure. For instance, the committee draft of the ISO / IEC 15938 Part 17 compression standard for neural networks (including the corrected equations discussed above) uses two state variables (pStateIdx0 and pStateIdx1) for each context model, and associates shift parameters (shift0 and shift1) with each of the state variables. The shift parameters control the adaptive agility of state variable updates based on the EWMA estimator. At the start of arithmetic encoding or decoding, the two state variables for each context model are set to 0, corresponding to an initial probability estimate of 0.5. Furthermore, there are nine predefined pairs of values for the initialization of the two shift parameters (see the array ShiftParameterSet), which signal in the bitstream for each context model which of the nine pairs is used for the shift parameters.
[0271] The effect of differentiating the state variables of the context model with several different initialization values is usually quite limited because the basic EWMA estimator quickly adapts to the statistics of the binary sequence associated with the context model. However, this effect becomes more relevant if there are entry points and if the context model is initialized at each entry point. Therefore, it can be beneficial to allow a different set of values to be used to initialize the state variables of the context model.
[0272] In a preferred embodiment, a list of 4-tuples is defined, each 4-tuple representing the initial values of two state variables and two shift parameters used for the context model. In the case of NNR, the value of the 4-tuple is associated with a 4-tuple of variables (shift0, shift1, pStateIdx0, pStateIdx1). Before arithmetic write coding begins, an integer index is signaled in the bitstream for each context model, indicating which of the 4-tuples to use to initialize the corresponding context model.
[0273] In another preferred embodiment, the index of the 4-tuple to be used to initialize the context model is signaled using a variable-length code that assigns shorter codewords to more frequently used 4-tuples.
[0274] For example, a list of the following 4-tuples (shift0, shift1, pStateIdx0, pStateIdx1) can be used:
[0275]
[0276]
[0277] It should be noted that the same concepts can also be used with the context model of VVC, where the two state variables and two agility parameters use the same variable names as in NNR (shift0, shift1, pStateIdx0, pStateIdx1). It should be noted that these variables serve the same purpose in VVC as in NNR, but their exact behavior differs. Therefore, the concepts presented here can also be applied to VVC when the 4-tuples are properly tuned.
[0278] In summary, embodiments of the invention provide an improved trade-off between compression performance and visual quality and low coding latency, resulting in improved write efficiency. Some embodiments also provide additional write efficiency.
[0279] Different inventive embodiments and aspects are described in, for example, the sections “Introduction,” “Sample Adaptive Offset,” “PSAO Classification,” “Decoder,” “Encoder,” and “Some Commentary,” wherein features, functionality, and details from the section “Sample Adaptive Offset” may optionally be incorporated into any of the other embodiments.
[0280] However, the features, functionalities, and details described in any other section may optionally be incorporated into embodiments of the invention.
[0281] Furthermore, the embodiments described in the chapters mentioned above may be used individually and may also be supplemented by any features, functionality and details in another chapter.
[0282] Furthermore, it should be noted that the individual aspects described herein may be used individually or in combination. Therefore, details may be added to each of the individual aspects, but not to the other.
[0283] In particular, embodiments are also described in the claims. The embodiments described in the claims may optionally be supplemented by any individual and combination of the features, functionalities and details as described herein.
[0284] It should also be noted that the present invention explicitly or implicitly describes features that can be used in a video encoder (a device for providing an encoded representation of an input video signal) and a video decoder (a device for providing a decoded representation of a video signal based on the encoded representation of the video signal). Therefore, any features described herein are applicable in the context of both a video encoder and a video decoder.
[0285] Furthermore, the features and functionalities disclosed herein related to the methods can also be used in a device (configured to perform such functionalities). Additionally, any features and functionalities disclosed herein with respect to a device can also be used in the corresponding methods. In other words, the methods disclosed herein can be supplemented by any of the features and functionalities described with respect to a device.
[0286] Furthermore, any of the features and functionalities described herein may be implemented using available hardware or software, or a combination of hardware and software, as will be described in the section “Alternative Implementation Examples”.
[0287] Alternative implementation plan
[0288] Although some aspects are described in the context of the device, it is apparent that these aspects also represent a description of the corresponding method, where blocks or devices correspond to method steps or features of method steps. Similarly, aspects described in the context of method steps also represent a description of corresponding blocks or items or features of the corresponding device. Some or all of the method steps may be performed by (or using) hardware devices (e.g., microprocessors, programmable computers, or electronic circuits). In some embodiments, one or more of the most important method steps may be performed by this device.
[0289] Depending on certain implementation requirements, embodiments of the present invention may be implemented in hardware or software. Implementation may be carried out using digital storage media such as floppy disks, DVDs, Blu-ray discs, CDs, ROMs, PROMs, EPROMs, EEPROMs, or flash memory, on which electronically readable control signals are stored, which cooperate (or are capable of cooperating with) a programmable computer system to cause the corresponding methods to be performed. Therefore, the digital storage media may be computer-readable.
[0290] According to some embodiments of the invention, a data carrier having electronically readable control signals is included, which are capable of cooperating with a programmable computer system to perform one of the methods described herein.
[0291] Typically, embodiments of the present invention can be implemented as a computer program product having program code that, when executed on a computer, is operatively used to perform one of the methods. The program code may, for example, be stored on a machine-readable medium.
[0292] Other embodiments include a computer program stored on a machine-readable medium for performing one of the methods described herein.
[0293] In other words, therefore, embodiments of the method of the present invention are computer programs having program code for executing one of the methods described herein when a computer program is running on a computer.
[0294] Therefore, another embodiment of the method of the present invention is a data carrier (or digital storage medium, or computer-readable medium) containing a computer program recorded thereon for performing one of the methods described herein. The data carrier, digital storage medium, or recording medium is generally tangible and / or non-transitory.
[0295] Therefore, another embodiment of the method of the present invention represents a data stream or signal sequence for performing one of the methods described herein. The data stream or signal sequence may, for example, be configured to be transmitted via a data communication connection (e.g., via the Internet).
[0296] Another embodiment includes a processing means, such as a computer or programmable logic device configured or adapted to perform one of the methods described herein.
[0297] Another embodiment includes a computer on which a computer program for performing one of the methods described herein is installed.
[0298] Another embodiment of the invention includes an apparatus or system configured to transmit (e.g., electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may be, for example, a computer, a mobile device, a memory device, etc. The apparatus or system may, for example, include a file server for transmitting the computer program to the receiver.
[0299] In some embodiments, a programmable logic device (e.g., a field-programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, the field-programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by any hardware device.
[0300] The device described herein may be implemented using hardware devices or using a computer or a combination of hardware devices and a computer.
[0301] The device described herein or any component thereof may be implemented, at least in part, in hardware and / or in software.
[0302] The methods described in this article can be performed using hardware devices, computers, or a combination of hardware devices and computers.
[0303] The methods described herein or any component of the devices described herein may be performed at least in part by hardware and / or software.
[0304] The embodiments described herein are merely illustrative of the principles of the invention. It should be understood that modifications and variations to the configurations and details described herein will be readily apparent to those skilled in the art. Therefore, it is intended to be limited only by the scope of the following claims, and not by the specific details presented through the description and explanation of the embodiments herein.
[0305] Subsequently, embodiments that broaden the embodiments described above are presented, or in other words, embodiments described above are represented by specific details, and for these embodiments, these specific details may be used individually or in combination to further specify the embodiments presented subsequently.
[0306] The text in parentheses indicates optional features, examples, and descriptions. Optional features and examples described regarding features in a particular embodiment may also be applied to equivalent or similar features in other embodiments.
[0307] 1. An arithmetic encoder for arithmetically encoding a sequence of information values into an arithmetic write code bitstream, configured as follows:
[0308] The information values are symbolized into a string of symbols in order to obtain a sequence of symbols;
[0309] The symbol sequence is arithmetically encoded by performing the following operation on each symbol:
[0310] Based on the symbol value of the corresponding symbol, the current interval of the current version of the write state of the arithmetic encoder is selected. This interval is then subdivided into multiple sub-intervals based on the probability estimate of the corresponding symbol, in order to obtain an updated version of the write state of the arithmetic encoder defined by the selected sub-intervals, for use in encoding the next symbol in the symbol sequence.
[0311] The encoder's internal parameters, which are renormalized to limit the write code state while continuing the bitstream, are then used.
[0312] It provides entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be resumed from a predetermined entry point.
[0313] 2. The arithmetic encoder as described in Example 1, wherein the entry point information includes information about the write state of the arithmetic decoder, and the write state appears in the arithmetic decoder when the arithmetic decoder decodes the bit stream until the predetermined entry point.
[0314] 3. The arithmetic encoder as described in Example 2, wherein the arithmetic encoder is configured to perform arithmetic decoding of the bitstream in order to determine information about the write code state of the arithmetic decoder.
[0315] 4. The arithmetic encoder as described in any one of Embodiments 2-3, wherein the write state of the arithmetic decoder is defined by internal decoder parameters, including an interval width parameter indicating the width of the interval and a pointer pointing to the interval, and the information about the write state of the arithmetic decoder includes the value of the pointer.
[0316] 5. The arithmetic encoder as described in Example 4, wherein the arithmetic encoder is configured to perform arithmetic decoding of the bitstream, and sets the value of a pointer contained in information about the write state of the arithmetic decoder to be equal to the current value represented by the pointer itself when the arithmetic decoding of the bitstream continues up to a predetermined entry point.
[0317] 6. The arithmetic encoder as described in any one of Embodiments 2-3, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, the decoder internal parameters including an interval width parameter indicating the width of the interval and a pointer to the interval, and the information about the write state of the arithmetic decoder includes the value of the interval width parameter.
[0318] 7. The arithmetic encoder as described in Example 6, wherein the arithmetic encoder is configured to
[0319] Perform arithmetic decoding of the bitstream, and set the value of the interval width parameter, contained in the information about the write state of the arithmetic decoder, to be equal to the current value of the interval width parameter itself as it is during the arithmetic decoding of the bitstream up to the predetermined entry point, or
[0320] The value of the interval width parameter, which is contained in the information about the write state of the arithmetic decoder, is set to be equal to the current value of the interval width parameter itself as it is when the arithmetic encoding of the symbol sequence continues until the predetermined entry point.
[0321] 8. The arithmetic encoder as described in any one of Embodiments 2-3, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of the interval and a pointer pointing to the interval, and the information regarding the write state of the arithmetic decoder includes the value of the pointer [e.g., the value is adopted by the pointer at a predetermined entry point], but does not include the value of the interval width parameter, wherein the arithmetic encoder is configured to
[0322] The value of the interval width parameter, contained in the information about the write code state of the arithmetic decoder, is set to a predetermined value, and this predetermined value is used when resuming the arithmetic encoding of the symbol sequence backward from the predetermined entry point.
[0323] Before resuming arithmetic encoding of the symbol sequence from the predetermined entry point, the arithmetic encoding of the symbol sequence is initially interrupted by arithmetic encoding of the symbol with a predetermined symbol value immediately preceding the predetermined entry point, and the value of the interval width parameter, which is contained in the information about the write code state of the arithmetic decoder, is set to be equal to the current value of the interval width parameter itself when the arithmetic encoding of the symbol sequence including the symbol with the predetermined symbol value continues up to the predetermined entry point.
[0324] 9. The arithmetic encoder as described in any of the foregoing embodiments, wherein the entry point information includes a bit stream pointer pointing to a predetermined bit in the bit stream, the predetermined bit to be read subsequently after the arithmetic decoding of the bit stream is resumed from the predetermined entry point.
[0325] 10. The arithmetic encoder as described in Example 9, wherein a bit stream pointer pointing to a predetermined bit in the bit stream is signaled in the bit stream in the form of an offset relative to the beginning of the bit stream.
[0326] 11. The arithmetic encoder as described in Example 9, wherein a bitstream pointer pointing to a predetermined bit in the bitstream signals in the bitstream an offset relative to the end of a string of leading bits in the bitstream, and the write state of the arithmetic decoder for performing arithmetic decoding of the bitstream is initialized based on the offset.
[0327] 12. The arithmetic encoder as described in Example 9, wherein entry point information allows for the recovery of arithmetic decoding of the bitstream from more than one entry point, and a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a previous entry point or relative to a predefined bitstream position associated with the predetermined entry point.
[0328] 13. The arithmetic encoder as described in Example 12 is configured to locate a predefined bitstream position as a point between consecutive values in a value sequence or by counting the bits of the bitstream.
[0329] 14. The arithmetic encoder as described in Example 12, wherein bit stream pointers pointing to predetermined bits in the bit stream are stored in the following units:
[0330] Bits, and / or
[0331] An integer multiple of bits n, where n>1, and for example n=8.
[0332] 15. The arithmetic encoder as described in Example 12, wherein the bit position of the previous entry point in the bit stream is signaled in the bit stream.
[0333] 16. The arithmetic encoder as described in any one of Examples 12-15, wherein the bitstream pointer is signaled in the bitstream in a different manner relative to another bitstream pointer included in the entry point information for pointing to another predetermined bit in the bitstream, the other predetermined bit to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0334] 17. An arithmetic encoder as described in any one of Examples 9-15, wherein a variable-length code is used to signal the bit stream pointer in the bit stream.
[0335] 18. An arithmetic encoder as described in any one of Examples 9-17, wherein exponential Golomb code, preferably unsigned exponential Golomb code, is used to signal a bitstream pointer in the bitstream.
[0336] 19. The arithmetic encoder as described in any one of embodiments 9-18, wherein the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream signals in the bit stream the difference between an offset relative to a previous entry point and an offset of the previous entry point relative to another entry point preceding the previous entry point.
[0337] 20. An arithmetic encoder as described in Example 19, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0338] 21. An arithmetic encoder as described in any one of Examples 19-20, wherein unsigned exponential Golomb codes are used to signal the bit position of a previously entered point in the bit stream.
[0339] 22. The arithmetic encoder as described in Example 21, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 11.
[0340] 23. An arithmetic encoder as described in any one of Examples 19-21, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0341] 24. The arithmetic encoder as described in Example 23, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 7.
[0342] 25. The arithmetic encoder as described in any of the foregoing embodiments, wherein the arithmetic encoder is configured to
[0343] Arithmetic coding of a symbol sequence using context-adaptive arithmetic coding includes: for context-adaptive coded symbols in the symbol sequence, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously encoded symbols in the symbol sequence.
[0344] The entry point information indicates a predetermined probability estimate for each of one or more predetermined context models in a set, and the arithmetic encoder is configured to use the predetermined probability estimates to recover the adaptation of the probability estimates of the multiple context models relative to the respective predetermined context models.
[0345] 26. The arithmetic encoder as described in any of the foregoing embodiments, wherein the arithmetic encoder is configured to
[0346] Arithmetic coding of a symbol sequence using context-adaptive arithmetic coding includes: for context-adaptive coded symbols in the symbol sequence, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously encoded symbols in the symbol sequence.
[0347] The arithmetic encoder is configured to set the probability estimate of the corresponding predetermined context model at the predetermined entry point to a default state for each of one or more predetermined context models in a set, and the arithmetic encoder is configured to use the default state to recover the adaptation of the probability estimates of the multiple context models relative to the corresponding predetermined context models, or
[0348] The arithmetic encoder is configured to set the probability estimate of the corresponding predetermined context model at a predetermined entry point for each of one or more predetermined context models in a set, as it is preserved under predetermined conditions during the arithmetic encoding of the symbol sequence preceding the predetermined entry point, and the arithmetic encoder is configured to use the preserved state to recover the adaptation of the probability estimates of the multiple context models relative to the corresponding predetermined context models.
[0349] 27. The arithmetic encoder as described in any of the foregoing embodiments, wherein the arithmetic encoder is configured to
[0350] Dependent quantization is used to derive a sequence of information values from a sequence of unquantized values using a state machine.
[0351] The entry point information includes the quantized state of the state machine up to the predetermined entry point.
[0352] 28. The arithmetic encoder as described in any of the foregoing embodiments, wherein the symbols are binary numbers and the symbols are converted to binary.
[0353] 29. The arithmetic encoder as described in any of the preceding embodiments, wherein the information value is a sequence of syntax elements representing a video.
[0354] 30. The arithmetic encoder as described in any one of Examples 1-29, wherein the information values are neural network parameters.
[0355] 31. An arithmetic decoder for arithmetically decoding a sequence of information values from a bitstream, configured as follows:
[0356] The entry point information is derived from the bit stream;
[0357] The entry point information is used to recover the arithmetic decoding of the bitstream from the predetermined entry point by arithmetically decoding the symbol sequence from the bitstream for each symbol as follows:
[0358] Based on the current version of the write code state of the arithmetic decoder, the current interval is determined by estimating the probability of the corresponding symbol and then subdividing it into multiple sub-intervals. Furthermore, based on the selected sub-intervals, the symbol value of the corresponding symbol is inferred.
[0359] By renormalizing the bitstream and selected sub-intervals and updating the decoder's internal parameters that define the write-code state, an updated version of the arithmetic decoder's write-code state is obtained for decoding the next symbol in the symbol sequence.
[0360] Information values are derived from a sequence of symbols through desymbolization.
[0361] 32. The arithmetic decoder as described in Example 31 is configured to use entry point information to determine the initial version of the write state of the arithmetic decoder, and to use the initial state to begin arithmetically decoding the bitstream forward from a predetermined entry point.
[0362] 33. The arithmetic decoder as described in embodiment 31 or 32, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer pointing to the interval, and the arithmetic decoder is configured to derive the starting value of the pointer from the entry point information, wherein the starting value is used to begin arithmetically decoding the bit stream forward from a predetermined entry point.
[0363] 34. The arithmetic decoder as described in any one of embodiments 31-33, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, the decoder internal parameters including an interval width parameter indicating the width of an interval and a pointer to the interval, and the arithmetic decoder is configured to derive an initial value of the interval width parameter from entry point information, wherein the initial value is used to begin arithmetically decoding the bit stream forward from a predetermined entry point.
[0364] 35. The arithmetic decoder as described in any one of embodiments 31-33, wherein the write state of the arithmetic decoder is defined by internal decoder parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval, and the arithmetic decoder is configured to...
[0365] The starting value of the pointer is derived from the entry point information, where the bitstream is arithmetically decoded forward from the predetermined entry point using the starting value.
[0366] The value of the interval width parameter, which is contained in the information about the write state of the arithmetic decoder, is set to a predetermined value, and the predetermined value of the interval width parameter is used to recover the arithmetic decoding of the symbol sequence from the predetermined entry point forward.
[0367] 36. The arithmetic decoder as described in Example 35, wherein the entry point information allows for the recovery of arithmetic decoding of the bitstream backward from more than one entry point, and the arithmetic decoder is configured to
[0368] Before resuming arithmetic encoding of the symbol sequence from the subsequent predetermined entry point, the arithmetic decoding of the symbol sequence at the subsequent predetermined entry point is initially interrupted by performing arithmetic decoding on the symbol with a predetermined symbol value immediately preceding the subsequent predetermined entry point.
[0369] 37. The arithmetic decoder as described in any one of embodiments 31-36 is configured to derive a bitstream pointer to a predetermined bit in the bitstream from the entry point information, and to use the predetermined bit as the next bit to be read after resuming arithmetic decoding of the bitstream forward from the predetermined entry point.
[0370] 38. The arithmetic decoder as described in embodiment 37, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the beginning of the bitstream.
[0371] 39. The arithmetic decoder as described in embodiment 37, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the end of a string of leading bits in the bitstream, and the arithmetic decoder is configured to initialize the write state of the arithmetic decoder when performing arithmetic decoding of the bitstream from the beginning of the bitstream based on the offset.
[0372] 40. The arithmetic decoder as described in Example 37, wherein entry point information allows the arithmetic decoding of the bitstream to be resumed backward from more than one entry point, and a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a previous entry point or relative to a predefined bitstream position associated with the predetermined entry point.
[0373] 41. The arithmetic decoder as described in Example 40 is configured to locate predefined bitstream positions as points between consecutive values in a value sequence or by counting bits in the bitstream.
[0374] 42. The arithmetic decoder as described in embodiment 40, wherein bitstream pointers pointing to predetermined bits in the bitstream are stored in the following units:
[0375] Bits, and / or
[0376] An integer multiple of bits n, where n>1, and for example n=8.
[0377] 43. An arithmetic decoder as described in embodiment 42, wherein a signal is sent in the bit stream to notify the bit position of the previously entered point in the bit stream.
[0378] 44. An arithmetic decoder as described in any one of embodiments 40-43, wherein the bitstream pointer is signaled in the bitstream in a different manner relative to another bitstream pointer included by the entry point information for pointing to another predetermined bit in the bitstream, the other predetermined bit to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0379] 45. An arithmetic decoder as described in any one of embodiments 37-43, wherein a variable-length code is used to signal the bitstream pointer in the bitstream.
[0380] 46. An arithmetic decoder as described in any one of Examples 37-44, wherein exponential Golomb code, preferably unsigned exponential Golomb code, is used to signal the bit stream pointer in the bit stream.
[0381] 47. An arithmetic decoder as described in any one of embodiments 37-46, wherein the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream is signaled in the bit stream in the form of the difference between an offset relative to a previous entry point and an offset of the previous entry point relative to another entry point preceding the previous entry point.
[0382] 48. An arithmetic decoder as described in Example 47, wherein a signed exponential Golomb code is used to signal the bitstream pointer in the bitstream.
[0383] 49. An arithmetic decoder as described in any one of Examples 47-48, wherein unsigned exponential Golomb codes are used to signal the bit position of the previously entered point in the bit stream.
[0384] 50. The arithmetic decoder as described in Example 49, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 11.
[0385] 51. An arithmetic decoder as described in any one of Examples 47-50, wherein a signed exponential Golomb code is used to signal the bitstream pointer in the bitstream.
[0386] 52. The arithmetic decoder as described in Example 51, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 7.
[0387] 53. The arithmetic decoder as described in any one of embodiments 31-52, wherein the arithmetic decoder is configured to
[0388] Arithmetic decoding of a symbol sequence using context-adaptive arithmetic decoding includes: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously decoded symbols in the symbol sequence.
[0389] The entry point information indicates a predetermined probability estimate for each of one or more predetermined context models in a set, and the arithmetic decoder is configured to use the predetermined probability estimates to recover the adaptation of the probability estimates of the multiple context models relative to the respective predetermined context models.
[0390] 54. The arithmetic decoder as described in any one of embodiments 31-53, wherein the arithmetic decoder is configured to
[0391] Arithmetic decoding of a symbol sequence using context-adaptive arithmetic decoding includes: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously decoded symbols in the symbol sequence.
[0392] The arithmetic decoder is configured to set the probability estimate of the corresponding predetermined context model at the predetermined entry point to a default state for each of one or more predetermined context models in a set, and the arithmetic decoder is configured to use the default state to recover the adaptability of the probability estimates of the multiple context models relative to the corresponding predetermined context models.
[0393] 55. The arithmetic decoder as described in Example 54, wherein the entry point information allows for the recovery of arithmetic decoding of the bitstream backward from more than one entry point, and the arithmetic decoder is configured to
[0394] For each of a set of one or more predefined context models, the probability estimate of the corresponding predefined context model at a subsequent predefined entry point is set to its own saved state under predetermined conditions during arithmetic decoding of the symbol sequence preceding the subsequent predefined entry point, and the arithmetic decoder is configured to use the saved state to recover the probability estimates of multiple context models from the subsequent predefined entry point forward, adaptively relative to the corresponding predefined context model.
[0395] 56. The arithmetic decoder as described in any one of embodiments 31-55, wherein the arithmetic decoder is configured to
[0396] Dependent dequantization is used to derive a quantized value sequence from an information value sequence using a state machine.
[0397] The quantization state is derived from the entry point information, and dependent quantization is restored backward from the predetermined entry point starting from the quantization state.
[0398] 57. An arithmetic decoder as described in any one of Examples 31-56, wherein the symbols are binary numbers and the desymbolization is debinding.
[0399] 58. The arithmetic decoder as described in any one of Examples 31-57, wherein the information value is a sequence of syntax elements representing a video.
[0400] 59. An arithmetic decoder as described in any one of Examples 31-57, wherein the information values are neural network parameters.
[0401] 60. An arithmetic decoder for arithmetically decoding neural network parameters from a bitstream, configured as follows:
[0402] Arithmetically decoding a symbol sequence from a bitstream using context-adaptive arithmetic decoding includes: for a context-adaptive decoded symbol in the symbol sequence, selecting a context model from a plurality of context models, each of the plurality of context models having an associated probability estimate; performing arithmetic decoding on the context-adaptive decoded symbol using the selected context model; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously decoded symbols in the symbol sequence.
[0403] Neural network parameters are derived from symbol sequences through desymbolization.
[0404] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of one or more context models in a set, a probability estimate associated with the corresponding context model is initialized based on context model information in the bitstream.
[0405] 61. The arithmetic decoder as described in Example 60 is configured to
[0406] The probability estimates of multiple context models are adapted to actual symbol statistics by using previously decoded symbols from a symbol sequence:
[0407] For each context model, a probability estimate associated with the corresponding context model is generated based on the symbols in the symbol sequence that have been previously adaptively decoded for the selected context model.
[0408] 62. The arithmetic decoder as described in embodiment 60 or 61 is configured to
[0409] The first hypothesis for probability estimation is derived by adapting the probability estimation of multiple context models to actual symbolic statistics in a manner that is controlled by a first adaptive agility parameter.
[0410] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of one or more context models, a first assumption and a first agility parameter associated with the corresponding context model are set based on context model information in the bitstream.
[0411] 63. The arithmetic decoder as described in Example 62 is configured to
[0412] The probability estimates are adapted to actual symbolic statistics by deriving a second hypothesis for probability estimation in a manner that adapts to actual symbolic statistics under a second adaptive agility controllable by a second agility parameter. The probability estimates of multiple context models are adapted to actual symbolic statistics using previously decoded symbols in the symbol sequence, wherein the probability estimates are determined by the average of the first hypothesis and the second hypothesis.
[0413] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of one or more context models, a second hypothesis and a second agility parameter associated with the corresponding context model are set based on context model information in the bitstream.
[0414] 64. The arithmetic decoder as described in embodiment 63, wherein the context model information in the bitstream includes an entry index of a table of quadruples for defining the values of a first hypothesis and a second hypothesis, and a first agility parameter and a second agility parameter, and the arithmetic decoder is configured to use the entry index to select a quadruple of the table and to use a quadruple to set the first hypothesis and the second hypothesis, and the first agility parameter and the second agility parameter.
[0415] 65. The arithmetic decoder as described in Example 64, wherein the number of quadruplets used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, is between 8 and 10, including 8 and 10.
[0416] 66. The arithmetic decoder as described in any one of embodiments 64-65, wherein the quadruples for defining the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, correspond to one of three, four, or five mutually distinguishable settings for the first agility parameter and the second agility parameter.
[0417] 67. The arithmetic decoder as described in any one of embodiments 64-66, wherein the symbols are binary numbers and designed to debindified, and the quadruples used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, comprise:
[0418] Based on the first three quadruples, the first agility parameter is set to a first value, and the second agility parameter is set to a second value, which corresponds to a lower adaptive agility than the first value. Furthermore, based on the first of the first three quadruples, the first and second hypotheses correspond to equal probabilities; based on the second of the first three quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value; and based on the third of the first three quadruples, the first and second hypotheses correspond to a probability that the second binary value is greater than the first binary value.
[0419] The second and third quadruples, based on all the second and third quadruples, the first agility parameter is set to the third value, which corresponds to an adaptive agility lower than the first value and greater than the second value, and the second agility parameter is set to the fourth value, which corresponds to an adaptive agility lower than the second value. Furthermore, based on the first and second quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value. And based on the third quadruple, the first and second hypotheses correspond to a probability that the second binary value is greater than the first binary value.
[0420] Given two quadruples, the first agility parameter is set to a fourth value, corresponding to an adaptive agility lower than the third value and a greater adaptive agility than the second value. The second agility parameter is set to a sixth value, corresponding to an adaptive agility lower than the second value and a greater adaptive agility than the fourth value. Furthermore, based on the first of the two quadruples, the first and second hypotheses correspond to equal probabilities. And based on the second of the two quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value.
[0421] A quadruple is used to set the first agility parameter to a seventh value, which corresponds to an adaptive agility greater than the first value. The first hypothesis and the second hypothesis are also given equal probability.
[0422] 68. An arithmetic decoder as described in any one of embodiments 63-67, wherein the sign is a binary number, and designification is debinding, and the arithmetic decoder is configured to...
[0423] By using previously decoded symbols from a symbol sequence to represent each of the first and second hypotheses, respectively, the probability estimates of multiple context models are adapted to actual symbol statistics, where the signed integer indicates equal probability when it is zero, greater than zero indicates that the first binary value is more probable than the second binary value, and less than zero indicates that the second binary value is more probable than the first binary value.
[0424] For each context model, if the currently decoded binary number has a first binary value, the signed integer is incremented; and if the currently decoded binary number has a second binary value, the signed integer is decremented. The amount of increment or decrement is controlled by a first agility parameter relative to the first hypothesis and by a second agility parameter relative to the second hypothesis, such that the larger the increment, the smaller the first and second agility parameters, respectively.
[0425] The probability estimate is determined by averaging the first signed integer and the second signed integer.
[0426] 69. The arithmetic decoder as described in Example 68 is configured to determine the amount of increase and decrease by using a transformation table.
[0427] 70. The arithmetic decoder as described in Example 69 is configured to use the same transformation table for the first hypothesis and the second hypothesis.
[0428] 71. The arithmetic decoder as described in embodiment 69 or 70 is configured to determine the amount of increase and decrease by using a transformation table, wherein the power depends on a first adaptive parameter and a second adaptive parameter, respectively, at entries indexed by a table index determined by a signed integer, and the transformation step size is divided by a power of 2.
[0429] 72. An arithmetic decoder as described in embodiment 69 or 70, wherein the signed integer is represented by a two's complement representation with n bits, where n is larger for the second hypothesis than for the first hypothesis, wherein the arithmetic decoder is configured to divide the signed integer by 2 in one aspect. n-m And on the other hand, divided by 2 m-1 The transformation table is looked up at the indexed entries to obtain the transformation step size, and the transformation step size is divided by a power of 2 to determine the amount of increase and decrease by using the transformation table, wherein the power linearly depends on the first adaptive parameter and the second adaptive parameter, respectively, and the transformation step size determines the amount.
[0430] 73. An arithmetic decoder as described in Example 72, wherein the transformation step size stored in the entry of the transformation table increases or decreases monotonically.
[0431] 74. A method (100) for arithmetically encoding a sequence of information values into an arithmetic write code bitstream, comprising:
[0432] The information value is symbolized (101) into a symbol string in order to obtain a symbol sequence;
[0433] The (102) symbol sequence is arithmetically encoded by the following operation:
[0434] For each symbol, the current interval of the current version of the write code state of the arithmetic encoder is subdivided (103) according to the probability estimate of the corresponding symbol.
[0435] Based on the symbol value of the corresponding symbol, a sub-interval is selected from multiple sub-intervals (104) to obtain an updated version of the write code state of the arithmetic encoder defined by the selected sub-interval for encoding the next symbol in the symbol sequence, and
[0436] Renormalization (105) limits the encoder's internal parameters in the write state while continuing the bitstream.
[0437] (106) entry point information is provided to the bit stream, thereby allowing arithmetic decoding of the bit stream to be resumed from the predetermined entry point.
[0438] 75. The method as described in Example 74, wherein the entry point information includes information about the write state of the arithmetic decoder, which appears in the arithmetic decoder when the arithmetic decoder decodes the bitstream up to a predetermined entry point.
[0439] 76. The method of embodiment 75 further includes performing arithmetic decoding of the bitstream to determine information about the write code state of the arithmetic decoder.
[0440] 77. The method as described in any one of Examples 75-76, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval, and the information regarding the write state of the arithmetic decoder includes the value of the pointer.
[0441] 78. The method of embodiment 77 further includes performing arithmetic decoding of the bitstream and setting the value of a pointer contained in the information about the write state of the arithmetic decoder to be equal to the current value represented by the pointer itself as the arithmetic decoding of the bitstream continues up to a predetermined entry point.
[0442] 79. The method as described in any one of Examples 75-76, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval, and the information regarding the write state of the arithmetic decoder includes the value of the interval width parameter.
[0443] 80. The method as described in Example 79, further comprising:
[0444] Perform arithmetic decoding of the bitstream, and set the value of the interval width parameter, contained in the information about the write state of the arithmetic decoder, to be equal to the current value of the interval width parameter itself as it is during the arithmetic decoding of the bitstream up to the predetermined entry point, or
[0445] The value of the interval width parameter, which is contained in the information about the write state of the arithmetic decoder, is set to be equal to the current value of the interval width parameter itself when the arithmetic encoding of the symbol sequence is performed up to the predetermined entry point.
[0446] 81. The method as described in any one of Examples 75-76, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer to the interval, and the information regarding the write state of the arithmetic decoder includes the value of the pointer but not the value of the interval width parameter, wherein the method further includes:
[0447] The value of the interval width parameter, contained in the information about the write code state of the arithmetic decoder, is set to a predetermined value, and this predetermined value is used when resuming the arithmetic encoding of the symbol sequence backward from the predetermined entry point.
[0448] Before resuming arithmetic encoding of the symbol sequence from the predetermined entry point, the arithmetic encoding of the symbol sequence is initially interrupted by arithmetic encoding of the symbol with a predetermined symbol value immediately preceding the predetermined entry point, and the value of the interval width parameter, which is contained in the information about the write code state of the arithmetic decoder, is set to be equal to the current value of the interval width parameter itself when the arithmetic encoding of the symbol sequence including the symbol with the predetermined symbol value continues up to the predetermined entry point.
[0449] 82. The method as described in any one of Examples 74-81, wherein the entry point information includes a bit stream pointer pointing to a predetermined bit in the bit stream, the predetermined bit to be read subsequently after arithmetic decoding of the bit stream is resumed from the predetermined entry point.
[0450] 83. The method as described in Example 82, wherein a bit stream pointer pointing to a predetermined bit in the bit stream is signaled in the bit stream in the form of an offset relative to the beginning of the bit stream.
[0451] 84. The method as described in Example 82, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the end of a string of leading bits in the bitstream, and the write state of the arithmetic decoder for performing arithmetic decoding of the bitstream is initialized based on the offset.
[0452] 85. The method as described in Example 82, wherein entry point information allows for the recovery of arithmetic decoding of the bitstream from more than one entry point, and a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a previous entry point or relative to a predefined bitstream position associated with the predetermined entry point.
[0453] 86. The method as described in Example 85 includes locating a predefined bitstream position as a point between consecutive values in a value sequence or locating a predefined bitstream position by counting the bits of the bitstream.
[0454] 87. The method as described in Example 85, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is stored in the following units:
[0455] Bits, and / or
[0456] An integer multiple of bits n, where n>1, and for example n=8.
[0457] 88. The method as described in Example 85, wherein a signal is sent in the bit stream to notify the bit position of the previously entered point in the bit stream.
[0458] 89. The method of any one of embodiments 85-88, wherein the bitstream pointer is signaled in the bitstream in a different manner relative to another bitstream pointer included by the entry point information for pointing to another predetermined bit in the bitstream, the other predetermined bit to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0459] 90. The method as described in any one of Examples 82-89, wherein a variable-length code is used to signal the bit stream pointer in the bit stream.
[0460] 91. The method as described in any one of Examples 82-90, wherein exponential Golomb codes, preferably unsigned exponential Golomb codes, are used to signal the bit stream pointer in the bit stream.
[0461] 92. The method of any one of Examples 82-91, wherein the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream signals the bit stream in the form of the difference between an offset relative to a previous entry point and an offset of the previous entry point relative to another entry point preceding the previous entry point.
[0462] 93. The method as described in Example 92, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0463] 94. The method as described in any one of Examples 92-93, wherein unsigned exponential Golomb codes are used to signal the bit position of the previously entered point in the bit stream.
[0464] 95. The method as described in Example 94, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 11.
[0465] 96. The method as described in any one of Examples 92 to 95, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0466] 97. The method as described in Example 96, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 7.
[0467] 98. A method for arithmetically decoding a sequence of information values from a bitstream, comprising:
[0468] The (201) entry point information is derived from the bitstream;
[0469] The (202) entry point information is used to recover the arithmetic decoding of the bitstream from the predetermined entry point by arithmetically decoding the symbol sequence of the bitstream for each symbol as follows:
[0470] Determine (203) the current version of the write code state of the arithmetic decoder, the sub-intervals of the current interval subdivided into multiple sub-intervals based on the probability estimate of the corresponding symbol, and infer (204) the symbol value of the corresponding symbol based on the selected sub-intervals, and
[0471] By renormalizing the bitstream and selected sub-intervals and updating the decoder's internal parameters that define the write code state (205), an updated version of the arithmetic decoder's write code state is obtained for decoding the next symbol in the symbol sequence.
[0472] The information value (206) is obtained from the symbol sequence by desymbolization.
[0473] 99. The method of embodiment 98 further includes using entry point information to determine the initial version of the write state of the arithmetic decoder, and using the initial state to begin arithmetically decoding the bitstream forward from the predetermined entry point.
[0474] 100. The method as described in any one of Embodiments 98 or 99, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, including an interval width parameter indicating the width of an interval and a pointer pointing to the interval, and the method further includes deriving a starting value of the pointer from entry point information, wherein the starting value is used to begin arithmetically decoding the bit stream forward from a predetermined entry point.
[0475] 101. The method of any one of embodiments 98-100, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, the decoder internal parameters including an interval width parameter indicating the width of an interval and a pointer to the interval, and the method further includes deriving an initial value of the interval width parameter from entry point information, wherein the initial value is used to begin arithmetically decoding the bit stream forward from a predetermined entry point.
[0476] 102. The method as described in any one of Examples 98-100, wherein the write state of the arithmetic decoder is defined by decoder internal parameters, the decoder internal parameters including an interval width parameter indicating the width of the interval and a pointer pointing to the interval, and the method further includes:
[0477] The starting value of the pointer is derived from the entry point information, where the bitstream is arithmetically decoded forward from the predetermined entry point using the starting value.
[0478] The value of the interval width parameter, which is contained in the information about the write state of the arithmetic decoder, is set to a predetermined value, and the predetermined value of the interval width parameter is used to recover the arithmetic decoding of the symbol sequence from the predetermined entry point forward.
[0479] 103. The method of embodiment 102, wherein the entry point information allows for the recovery of arithmetic decoding of the bitstream backward from more than one entry point, and the method further includes:
[0480] Before resuming arithmetic encoding of the symbol sequence from the subsequent predetermined entry point, the arithmetic decoding of the symbol sequence at the subsequent predetermined entry point is initially interrupted by performing arithmetic decoding on the symbol with a predetermined symbol value immediately preceding the subsequent predetermined entry point.
[0481] 104. The method as described in any one of Examples 98-103 further includes deriving a bitstream pointer pointing to a predetermined bit in the bitstream from the entry point information, and using the predetermined bit as the next bit to be read after resuming arithmetic decoding of the bitstream forward from the predetermined entry point.
[0482] 105. The method as described in Example 104, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the beginning of the bitstream.
[0483] 106. The method as described in Example 104, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to the end of a string of leading bits in the bitstream, and based on this, the method further initializes the write state of the arithmetic decoder while performing arithmetic decoding of the bitstream from the beginning of the bitstream backward.
[0484] 107. The method as described in Example 104, wherein entry point information allows for the recovery of arithmetic decoding of the bitstream from more than one entry point, and a bitstream pointer pointing to a predetermined bit in the bitstream is signaled in the bitstream in the form of an offset relative to a previous entry point or relative to a predefined bitstream position associated with the predetermined entry point.
[0485] 108. The method as described in Example 107 includes locating a predefined bitstream position as a point between consecutive values in a value sequence or locating a predefined bitstream position by counting the bits of the bitstream.
[0486] 109. The method as described in Example 107, wherein a bitstream pointer pointing to a predetermined bit in the bitstream is stored in the following units:
[0487] Bits, and / or
[0488] An integer multiple of bits n, where n>1, and for example n=8.
[0489] 110. The method as described in Example 107, wherein a signal is sent in the bit stream to notify the bit position of the previously entered point in the bit stream.
[0490] 111. The method as described in any one of Examples 104-110, wherein the bitstream pointer is signaled in the bitstream in a different manner relative to another bitstream pointer included by the entry point information for pointing to another predetermined bit in the bitstream, the other predetermined bit to be read next after the arithmetic decoding of the bitstream is resumed from the previous entry point.
[0491] 112. The method as described in any one of Examples 104-111, wherein a variable-length code is used to signal the bit stream pointer in the bit stream.
[0492] 113. The method as described in any one of Examples 104-112, wherein exponential Golomb codes, preferably unsigned exponential Golomb codes, are used to signal the bit stream pointer in the bit stream.
[0493] 114. The method of any one of embodiments 104-113, wherein the predetermined entry point is either a third entry point relative to the start of the bit stream or an entry point after the third entry point, and a bit stream pointer pointing to a predetermined bit in the bit stream signals the bit stream in the form of the difference between an offset relative to a previous entry point and an offset of the previous entry point relative to another entry point preceding the previous entry point.
[0494] 115. The method as described in Example 114, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0495] 116. The method as described in any one of Examples 114-115, wherein unsigned exponential Golomb codes are used to signal the bit position of the previously entered point in the bit stream.
[0496] 117. The method as described in Example 116, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 11.
[0497] 118. The method as described in any one of Examples 114-117, wherein a signed exponential Golomb code is used to signal the bit stream pointer in the bit stream.
[0498] 119. The method as described in Example 118, wherein the exponential Golomb code parameter for the exponential Golomb code is a value of 7.
[0499] 120. The method as described in any one of Examples 98-119, further comprising:
[0500] Arithmetic decoding of a symbol sequence using context-adaptive arithmetic decoding includes: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously decoded symbols in the symbol sequence.
[0501] The entry point information indicates a predetermined probability estimate for each of a set of one or more predetermined context models, and the method further includes using the predetermined probability estimates to recover an adaptation of the probability estimates of the multiple context models relative to the respective predetermined context models.
[0502] 121. The method as described in any one of Examples 98-120, further comprising:
[0503] Arithmetic decoding of a symbol sequence using context-adaptive arithmetic decoding includes: for a symbol in the symbol sequence to be context-adaptively decoded, selecting a context model from multiple context models, each of which has an associated probability estimate; and adapting the probability estimates of the multiple context models to the actual symbol statistics using previously decoded symbols in the symbol sequence.
[0504] The method further includes: for each of a set of one or more predetermined context models, setting the probability estimate of the corresponding predetermined context model at the predetermined entry point to a default state, and the method further includes using the default state to recover the adaptation of the probability estimates of the multiple context models relative to the corresponding predetermined context models.
[0505] 122. The method of embodiment 121, wherein the entry point information allows for the recovery of arithmetic decoding of the bitstream backward from more than one entry point, and the method further includes:
[0506] For each of a set of one or more predetermined context models, the probability estimate of the corresponding predetermined context model at a subsequent predetermined entry point is set to its own preserved state under predetermined conditions during arithmetic decoding of the symbol sequence preceding the subsequent predetermined entry point, and the method further includes using the preserved state to recover the adaptation of the probability estimates of the multiple context models relative to the corresponding predetermined context models from the subsequent predetermined entry point forward.
[0507] 123. The method as described in any one of Examples 98-122, further comprising:
[0508] Dependent dequantization is used to derive a quantized value sequence from an information value sequence using a state machine.
[0509] The quantization state is derived from the entry point information. Starting from the quantization state, the dependent quantization is restored forward from the predetermined entry point.
[0510] 124. The method as described in any one of Examples 98-123, wherein the sign is a binary number and designification is debinding.
[0511] 125. The method as described in any one of Examples 98-124, wherein the information value is a sequence of syntax elements representing a video.
[0512] 126. The method as described in any one of Examples 98-124, wherein the information values are neural network parameters.
[0513] 127. An arithmetic encoder for arithmetically encoding neural network parameters into a bitstream, configured to:
[0514] Symbol sequences are derived from neural network parameters through symbolization;
[0515] Arithmetically encoding a symbol sequence into a bitstream using context-adaptive arithmetic coding includes: for context-adaptive coded symbols in the symbol sequence, selecting a context model from a plurality of context models, each of the plurality of context models having an associated probability estimate; performing arithmetic coding on the context-adaptive coded symbols using the selected context models; and adapting the probability estimates of the plurality of context models to actual symbol statistics using previously encoded symbols in the symbol sequence.
[0516] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, a probability estimate associated with the corresponding context model is initialized based on context model information signaled in the bitstream.
[0517] 128. The arithmetic encoder as described in Example 127 is configured to
[0518] The probability estimates of multiple context models are adapted to actual symbol statistics by using previously encoded symbols from a symbol sequence:
[0519] For each context model, a probability estimate associated with the corresponding context model is generated based on the symbols in the symbol sequence that have been adaptively encoded for the previous context model selected for it.
[0520] 129. The arithmetic encoder as described in Embodiments 127 or 128 is configured to
[0521] The probability estimates are derived by deriving a first hypothesis that adapts to actual symbol statistics under a first adaptive agility controllable by a first agility parameter, and by using previously encoded symbols in the symbol sequence to adapt the probability estimates of multiple context models to actual symbol statistics.
[0522] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, a first assumption and a first agility parameter associated with the corresponding context model are set based on context model information signaled in the bitstream.
[0523] 130. The arithmetic encoder as described in Example 127 is configured to
[0524] By deriving a second hypothesis for the probability estimate in a manner adapted to actual symbolic statistics under a second adaptive agility controllable by a second agility parameter, and forming an average of the first and second hypotheses, the probability estimates of multiple context models are adapted to actual symbolic statistics using previously encoded symbols in the symbol sequence.
[0525] At the beginning of the bitstream and / or at one or more entry points within the bitstream, for each of a set of one or more context models, a second assumption and a second agility parameter associated with the corresponding context model are set based on context model information signaled in the bitstream.
[0526] 131. The arithmetic encoder as described in embodiment 130, wherein the context model information in the bitstream includes an entry index of a table of quadruples for defining the values of a first hypothesis and a second hypothesis, and a first agility parameter and a second agility parameter, and the arithmetic encoder is configured to use the entry index to select a quadruple of the table and to use a quadruple to set the first hypothesis and the second hypothesis, and the first agility parameter and the second agility parameter.
[0527] 132. The arithmetic encoder as described in embodiment 130, wherein the number of quadruplets used to define the values of the first hypothesis and the second hypothesis, as well as the first agility parameter and the second agility parameter, is between 8 and 10, including 8 and 10.
[0528] 133. The arithmetic encoder as described in any one of embodiments 131 and 132, wherein the quadruples for defining the values of the first hypothesis and the second hypothesis and the first agility parameter and the second agility parameter correspond to one of three, four or five mutually distinguishable settings for the first agility parameter and the second agility parameter.
[0529] 134. The arithmetic encoder as described in any one of embodiments 131-133, wherein the quadruple for defining the values of the first hypothesis and the second hypothesis, and the first agility parameter and the second agility parameter, comprises:
[0530] Based on the first three quadruples, the first agility parameter is set to a first value, and the second agility parameter is set to a second value, which corresponds to a lower adaptive agility than the first value. Furthermore, based on the first of the first three quadruples, the first and second hypotheses correspond to equal probabilities; based on the second of the first three quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value; and based on the third of the first three quadruples, the first and second hypotheses correspond to a probability that the second binary value is greater than the first binary value.
[0531] The second and third quadruples, based on all the second and third quadruples, the first agility parameter is set to the third value, which corresponds to an adaptive agility lower than the first value and greater than the second value, and the second agility parameter is set to the fourth value, which corresponds to an adaptive agility lower than the second value. Based on the first and second of the third and third quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value. Based on the third of the second and third quadruples, the first and second hypotheses correspond to a probability that the second binary value is greater than the first binary value.
[0532] Given two quadruples, the first agility parameter is set to a fourth value, corresponding to an adaptive agility lower than the third value and a higher adaptive agility than the second value. The second agility parameter is set to a sixth value, corresponding to an adaptive agility lower than the second value and a higher adaptive agility than the fourth value. Furthermore, based on the first of the two quadruples, the first and second hypotheses correspond to equal probabilities. And based on the second of the two quadruples, the first and second hypotheses correspond to a probability that the first binary value is greater than the second binary value.
[0533] A quadruple is used to set the first agility parameter to a seventh value, which corresponds to an adaptive agility greater than the first value. The first hypothesis and the second hypothesis are also assumed to be equally probable.
[0534] 135. The arithmetic encoder as described in any one of embodiments 130-134, wherein the symbols are binary numbers and the symbolization is binary, and the arithmetic encoder is configured to...
[0535] By representing each of the first and second hypotheses with a signed integer, the probability estimates of multiple context models are adapted to actual symbol statistics using previously encoded symbols in the symbol sequence. The signed integer indicates equal probability when it is zero, greater than zero when it indicates that the first binary value is more probable than the second binary value, and less than zero when it indicates that the second binary value is more probable than the first binary value.
[0536] For each context model, if the currently encoded binary number has a first binary value, the signed integer is increased; and if the currently encoded binary number has a second binary value, the signed integer is decreased. The amount of increase or decrease is controlled by a first agility parameter relative to the first hypothesis and by a second agility parameter relative to the second hypothesis, such that the larger the amount, the smaller the first and second agility parameters, respectively.
[0537] The probability estimate is determined by averaging the first signed integer and the second signed integer.
[0538] 136. The arithmetic encoder as described in Example 135 is configured to determine the amount of increase and decrease by using a transformation table.
[0539] 137. The arithmetic encoder as described in Example 136 is configured to use the same transformation table for the first hypothesis and the second hypothesis.
[0540] 138. The arithmetic encoder as described in embodiment 136 or 137 is configured to determine the amount of increase and decrease by using a transformation table, wherein the transformation step size is obtained by looking up a transformation table at an entry indexed by a table index determined by a signed integer and dividing the transformation step size by a power of 2, wherein the power depends on a first adaptive parameter and a second adaptive parameter, respectively, wherein the transformation step size determines the amount.
[0541] 139. An arithmetic encoder as described in embodiment 136 or 137, wherein the signed integer is represented by a two's complement representation with n bits, where n is larger for the second hypothesis than for the first hypothesis, wherein the arithmetic encoder is configured to, in one aspect, divide the signed integer by 2 n-m And on the other hand, divided by 2 m-1 The transformation table is looked up at the entry of the sum index to obtain the transformation step size, and the transformation step size is divided by a power of 2 to determine the amount of increase and decrease by using the transformation table, wherein the affine of the power depends linearly on the first adaptive parameter and the second adaptive parameter, respectively, and the transformation step size determines the amount.
[0542] 140. An arithmetic encoder as described in Example 139, wherein the transformation step size stored in the entry of the transformation table increases or decreases monotonically.
[0543] 141. A computer program having program code, which, when run on a computer, is used to perform the method as described in any one of Examples 74-126.
[0544] 142. A bitstream generated using an arithmetic encoder as described in any one of Examples 1-30, 127-140.
Claims
1. A method for arithmetically encoding a sequence of information values into an arithmetic write code bitstream, comprising: The information values are symbolized into a string of symbols in order to obtain a sequence of symbols; The symbol sequence is arithmetically encoded using the following operations: For each symbol, the current interval of the current version of the write code state of the limiting arithmetic encoder is subdivided into multiple sub-intervals based on the probability estimate of the corresponding symbol. Based on the symbol value of the corresponding symbol, a sub-interval is selected from multiple sub-intervals to obtain an updated version of the write code state of the arithmetic encoder, defined by the selected sub-intervals, for use in encoding the next symbol in the symbol sequence. The encoder's internal parameters, which are renormalized to limit the write code state while continuing the bitstream, are then used. It provides entry point information to the bitstream, thereby allowing arithmetic decoding of the bitstream to be resumed from a predetermined entry point.
2. A method for arithmetically decoding a sequence of information values from a bitstream, comprising: The entry point information is derived from the bit stream; The entry point information is used to recover the arithmetic decoding of the bitstream from the predetermined entry point by arithmetically decoding the symbol sequence of the bitstream for each symbol as follows: Determine the current version of the write code state of the arithmetic decoder, the current interval is subdivided into multiple sub-intervals based on the probability estimate of the corresponding symbol, and infer the symbol value of the corresponding symbol based on the selected sub-interval. By renormalizing the bitstream and selected sub-intervals and updating the decoder's internal parameters that define the write-code state, an updated version of the arithmetic decoder's write-code state is obtained for decoding the next symbol in the symbol sequence. Information values are derived from a sequence of symbols through desymbolization.
Citation Information
Patent Citations
Method and apparatus for arithmetic coding
CN103152054A
Methods and Systems for Entropy Coder Initialization
US20120082218A1
Methods and systems for entropy coder initialization
US20170078668A1
Cited By
Arithmetic encoder for arithmetically encoding sequence of information values, arithmetic decoder for arithmetically decoding, method for arithmetically encoding and decoding sequence of information values, and computer program for implementing method
CN120934536A
Arithmetic encoder for arithmetically encoding and arithmetic decoder for arithmetically decoding a sequence of information values, methods for arithmetically encoding and decoding a sequence of information values and computer program for implementing these methods
US12652060B2
Arithmetic encoder for arithmetically encoding and arithmetic decoder for arithmetically decoding a sequence of information values, methods for arithmetically encoding and decoding a sequence of information values and computer program for implementing these methods
US12658940B2
Arithmetic encoder for arithmetically encoding and arithmetic decoder for arithmetically decoding a sequence of information values, methods for arithmetically encoding and decoding a sequence of information values and computer program for implementing these methods
US12658941B2