Compression of the entropy table by interpolation coding
Interpolation coding compresses the symbol occurrence table into an integer value, addressing inefficiencies in existing entropy encoding by reducing the compressed data size and enhancing decoding speed and memory efficiency.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NINTENDO CO LTD
- Filing Date
- 2025-06-27
- Publication Date
- 2026-06-05
AI Technical Summary
Existing entropy encoding methods require transmitting a symbol occurrence table alongside the encoded data, increasing the overall size of the compressed sequence, which is inefficient.
The method employs interpolation coding to compress the symbol occurrence table by converting it into an integer value, allowing for efficient decoding using sequential division and calculation, reducing the size of the compressed data.
This approach effectively reduces the size of the compressed data by efficiently encoding and decoding the symbol occurrence table, maintaining lossless compression and enabling faster, more memory-efficient decoding processes.
Smart Images

Figure 2026092652000001_ABST
Abstract
Description
[Technical Field]
[0001] This technology relates to encoding and decoding, specifically to systems, apparatus, circuits, methods, techniques, and programs for entropy encoding and decoding, including the encoding and decoding of codebooks, parameters, and / or tables used in entropy encoding. Furthermore, this technology relates to entropy encoding of compressed files and the encoding and decoding of the symbol occurrence tables used in said entropy encoding. This technology also relates to entropy-based file segmentation in this context. [Background technology]
[0002] Videos, images, digital music, video games, and other content are compressed before streaming, allowing them to be streamed with sufficiently low latency even on connections with limited bandwidth, such as mobile phones and home Wi-Fi networks.
[0003] Generally, there are two types of compression: lossy compression and lossless compression. Lossy compression reduces the size of content by removing certain information. Usually, the removed information is not something that would cause problems if it were omitted (for example, high-frequency sounds that only some people can hear, or fine details in photos or images that would only be displayed at low resolution and whose details would be invisible).
[0004] Lossless compression preserves all bit information from the original file or content after compression, and this information is restored when the file is decompressed. Lossless compression is useful when compressing computer-executable files because the loss of some computer instructions can lead to execution errors (this is like trying to follow a set of driving instructions that have been deleted every three lines).
[0005] A common form of lossless compression is called "entropy coding." Entropy coding is an encoding technique that involves assigning codes to symbols so that the length of the code matches the probability of the symbol's occurrence. The most frequently occurring symbols are coded with the shortest code. Samuel FB Morse and his friend Alfred Vail used entropy coding when they devised "Morse code" in the 1840s. Morse and Vail estimated the frequency of each character in a newspaper by counting the number of each character in a printing type set (they were not investigating the actual frequency of symbols in specific messages, as they were trying to create a universal code that could be used for any message sent by telegraph). They found the following:
[0006] 12,000 E 2,500 F
[0007] 9,000 T 2,000 W, Y
[0008] 8,000 A, I, N, O, S 1,700 G, P
[0009] 6,400 H 1,600 B
[0010] 6,200 R 1,200 V
[0011] 4,400 D 800 K
[0012] 4,000 L 500 Q
[0013] 3,400 U 400 J, X
[0014] 3,000 C, M 200 Z
[0015] Because the letter "E" appeared most frequently, Morse and Vail assigned it a single "dot" ("."), which was the shortest code a telegrapher could send. Similarly, Morse and Vail assigned the second shortest code (a single "dash," "-") to the second most frequently appearing letter, "T," and so on. Since the letters "Q," "J," "X," and "Z" appeared the least frequently, Morse and Vail assigned them longer codes consisting of a combination of four dots and / or dashes. There was no need to send a "codebook" for each message, and Morse code was quickly standardized and memorized by most telegraphers.
[0016] Entropy coding is widely used today for all kinds of data compression, with Huffman coding and arithmetic coding being the most popular. These often work by utilizing redundancy in the output of a quantizer. (See Huffman, "A Method for the Construction of Minimum-Redundancy Codes," Proceedings of the IRE, September 1952). Arithmetic coding encodes the entire message into a single number, an arbitrary-precision fraction q (0.0 ≤ q < 1.0), representing the current information as a range defined by two digits. Asymmetric number systems (ANS), a type of entropy coder developed in recent years, allow for faster implementations by directly operating on a single natural number representing the current information. (See en.wikipedia.org / wiki / Arithmetic_coding; Duda et al., "The use of asymmetric numeral systems as an accurate replacement for Huffman coding," Picture Coding Symposium (2015)).
[0017] One simple way to compress a sequence of symbols (e.g., computer data file 10) is to use a two-part code based on an ANS-type entropy encoder as shown in FIG. 1. In this case, first, a table F (reference numeral 16, two-part code “codebook”) containing the number of occurrences of each symbol within the sequence to be compressed (i.e., the “message”) is constructed. FIG. 1 shows this table F as a histogram. The table F, from which the probability of occurrence of each symbol can be estimated, is used by the ANS encoder to iteratively encode each symbol of the symbol sequence (in the illustrated example, first compressed using LZ4 lossless compression to reduce redundancy) into a single large number (encoded data). Note that in this example, the table F16 is “customized” to the specific sequence to be compressed in order to provide the most accurate estimate of the number of occurrences of each symbol within the actual message being encoded. Thus, in an exemplary embodiment, each unique sequence to be encoded has its own corresponding symbol occurrence table F.
[0018] If the table F remains the same throughout the symbol sequence encoding process for encoding a particular symbol sequence, the name “static encoding” is applied (in contrast, in “adaptive encoding” the table can change for each iteration of encoding). Since the static ANS decoder requires the table F16 (codebook) to perform the reverse of the encoding process, the table is provided to the decoder along with the encoded data 14 in what becomes the compressed sequence. Compressed sequence = Encoded data + Symbol occurrence table F
[0019] The symbol occurrence table F is also sent to the decoder and thus substantially becomes part of the compressed size of the above compressed sequence. Therefore, in order to reduce the overall compressed size of the compressed sequence, it is desirable to efficiently compress the table F. SUMMARY OF THE INVENTION
[0020] In one embodiment, the decoding method is executed using at least one processor and / or processing circuit. The decoding method includes receiving a symbol sequence entropy-encoded using a symbol occurrence table, receiving an integer value f obtained by encoding the symbol occurrence table, and decoding the symbol occurrence table using the received integer value f, including the following (i) and (ii): (i) Decoding each entry of the symbol occurrence cumulative table by sequentially dividing the decoding range of the symbol occurrence cumulative table at each intermediate index. For each decoding range, calculate the entry of the first index + f mod (the entry of the last index - the entry of the first index + 1) from the decoded entry of the symbol occurrence cumulative table, decode the entry of each intermediate index in the decoding range, and calculate f div (the entry of the last index - the entry of the first index + 1) to update f. (ii) Calculating the symbol occurrence table from the decoded entry of the symbol occurrence cumulative table The method may further include applying the decoded symbol occurrence table to entropy-decode the received encoded symbol sequence.
[0021] For clarity, the "symbol occurrence table" first mentioned above refers to table F, not the cumulative table C, in the embodiments described in detail below. Specifically, the <<cumulative interpolation encoding / decoding>> in the embodiments includes the conversion between table F and table C as described in (ii) above (hence the term <<cumulative>>). Therefore, in the embodiments, table C is decoded at the end of (i), and table F is decoded at the end of (ii). Therefore, table F is decoded in (i)+(ii). In other words, it is as follows.
[0022] <<Cumulative interpolation decoding>> decodes table F using the following procedure.
[0023] i) Decode table C using interpolation decoding.
[0024] ii) Calculate Table F from Table C.
[0025] In one embodiment, the decoding may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0026] In one embodiment, the decoding may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0027] In one embodiment, the received second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0028] In one embodiment, each entry in the accumulation table may be decoded by traversing the tree of the divided decoded ranges and performing division at each node before each child node of the tree. Each entry in the accumulation table may be decoded by traversing the tree of the divided decoded ranges in a depth-first manner and performing division at each node of the tree.
[0029] In one embodiment, the received integer value f may be represented as a bignum.
[0030] In one embodiment, the process may further include renormalization to enable faster and more memory-efficient decoding.
[0031] In one embodiment, the encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the sequence of LZ4 blocks.
[0032] In one embodiment, when using the received integer value f, the entry in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0033] In one embodiment, the entropy decoding may be an asymmetric coding system (ANS) entropy decoding.
[0034] In one embodiment, the sequential division and calculation may be further performed repeatedly or recursively for each of the decoding ranges.
[0035] In one embodiment, the method may further include independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and reconstructing the symbol sequence based on the segment headers.
[0036] In one embodiment, the method may further include decoding the received entropy-encoded symbol sequence to recover the lossless instructions, which are then executed by at least one processor.
[0037] In one embodiment, the method may further include generating at least a portion of an interactive graphic display using at least one graphics processing unit, based at least partially on the lossless restored graphic data obtained by decoding the received entropy-encoded symbol sequence.
[0038] In one embodiment, the decoder comprises at least one processor and / or processing circuit, the at least one processor and / or processing circuit accessing an integer value f that encodes a table of symbol occurrences, and decoding the table of symbol occurrences using the integer value f, including (i) and (ii) below. (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating f div (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. Performs an action that includes this.
[0039] In such embodiments, the following configurations may also be adopted.
[0040] The operation may further include entropy decoding the encoded symbol sequence by applying the calculated symbol occurrence table, and / or performing operations on at least a portion of the entropy-decoded symbol sequence, and / or streaming at least a portion of the entropy-decoded symbol sequence and / or information derived therefrom.
[0041] The operation described above may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0042] The operation described above may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0043] The operation may further include obtaining the second integer value m to be received from the header metadata of the encoded symbol sequence.
[0044] The operation described above may further include decrypting the entries in the cumulative table by traversing a tree of divided decryption ranges and performing division at each node before each child node of the tree, and / or decrypting the entries in the cumulative table by traversing the tree of divided decryption ranges sequentially in a depth-first manner and performing division at each node of the tree.
[0045] The received integer value f may be represented as a bignum.
[0046] The operation described above may further include renormalization to enable faster and more memory-efficient decoding.
[0047] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0048] When using the aforementioned integer value f, the entries in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0049] In the application described above, asymmetric number system (ANS) entropy decoding may be applied to decode the received encoded symbol sequence.
[0050] The operation may further include, for each decoding range, repeating or recursively performing the sequential division and calculation, and / or independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, reconstructing the symbol sequence based on the segment header, and / or executing instructions that have been losslessly restored by decoding the received entropy-encoded symbol sequence, and / or generating at least a portion of an interactive graphic display using at least one graphics processing unit, at least partially based on the graphic data that has been losslessly restored by decoding the received entropy-encoded symbol sequence.
[0051] One embodiment of a system for generating animated graphics includes at least one storage means for storing at least one data block representing a sequence of symbols entropy encoded using a symbol occurrence table, and an integer value f encoding the symbol occurrence table, and means for decoding the symbol occurrence table using the integer value f, including (i) and (ii) below, (i) The decoding range of the cumulative symbol occurrence table is sequentially divided by each intermediate index to decode each entry in the cumulative symbol occurrence table, and for each decoding range, the entry of the first index + f mod (entry of the last index - entry of the first index + 1) is calculated from the decoded entry in the cumulative symbol occurrence table to decode the entry of each intermediate index in the decoding range, and f div (entry of the last index - entry of the first index + 1) is calculated to update f. (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. The system may also include means for entropy decoding the encoded symbol sequence represented by the at least one data block by applying the decoded symbol occurrence table, wherein at least a portion of the entropy-decoded symbol sequence represents a graphic and / or graphic animation behavior, and for generating an animated graphic based at least partially on the entropy-decoded symbol sequence.
[0052] In such embodiments, the following configurations may also be adopted.
[0053] The system further provides a means for receiving a second integer value m, In (i) above, zero may be used as the lower limit of the cumulative table of symbol occurrences, and the received second integer value m may be used as the upper limit of the cumulative table of symbol occurrences.
[0054] The system further provides a means for receiving a second integer value m, In (i) above, a zero value may be inserted as the first entry in the cumulative table of symbol occurrences, and the received second integer value m may be inserted as the last entry in the cumulative table of symbol occurrences.
[0055] The second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0056] In (i) above, each entry in the cumulative table may be decoded by traversing the tree of the divided decryption range and performing division by each node in front of the child nodes of each node in the tree.
[0057] In (i) above, the entry in the cumulative table may be decoded by sequentially traversing the tree of the divided decryption range in a depth-first manner and performing division at each node of the tree.
[0058] The aforementioned integer value f may be represented as a bignum.
[0059] The system may also include means for renormalizing the data to enable faster and more memory-efficient decoding.
[0060] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0061] When using the aforementioned integer value f, the entries in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0062] The entropy decoding described above may be an asymmetric number system (ANS) entropy decoding.
[0063] In (i) above, the sequential division and calculation may be repeated or recursively performed for each decoded range. and / or means for independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence and reconstructing the symbol sequence based on the segment header may be further provided. and / or means for executing instructions that have been losslessly restored by decoding the received entropy-encoded symbol sequence may be further provided. and / or means for at least partially decoding the entropy-encoded symbol sequence in a cloud environment may be further provided.
[0064] The system may further include at least one graphics processing means that generates at least a portion of an interactive graphic display based at least partially on graphic data that is losslessly restored by decoding the entropy-encoded symbol sequence.
[0065] The system may further include an emulator that generates the animated graphic based at least partially on the entropy-decoded symbol sequence.
[0066] An exemplary embodiment of an encoding method performed using at least one processor and / or processing circuit is: generating a table of symbol occurrences based on the occurrences of symbols in a symbol sequence to be entropy encoded; entropy encoding the symbol sequence using the table of symbol occurrences; and encoding the table of symbol occurrences using an integer value f, including (i) and (ii) below: (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encode each entry in the cumulative symbol occurrence table by sequentially dividing the encoding range of the cumulative symbol occurrence table by each intermediate index, and update f by encoding each intermediate index entry in the encoding range by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index) for each encoding range. This may include forming at least one data block representing the entropy-encoded symbol sequence and the obtained integer value f that encodes the table of symbol occurrences.
[0067] The above corresponds to exemplary embodiments, which are described in detail below.
[0068] <<Cumulative interpolation coding>> encodes table F in the following way:
[0069] Calculate Table C from Table F
[0070] Encode table C using interpolation coding.
[0071] In such embodiments, the following configurations may also be adopted.
[0072] The encoding may further include generating a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0073] The encoding may further include generating a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the generated second integer value m as the last entry in the cumulative table of symbol occurrences.
[0074] The encoding may include including the second integer value m as metadata in the header associated with the encoded symbol sequence.
[0075] The encoding may further include encoding each entry in the cumulative table by traversing a tree of divided encoding ranges and performing multiplication at each node after the child nodes of each node.
[0076] The encoding may further include encoding each entry in the cumulative table by traversing the tree of the divided encoding ranges in reverse order using a depth-first method and performing multiplication at each node.
[0077] The encoding may further include representing the generated integer value f as a bignum.
[0078] The encoding may further include renormalization to enable faster and more memory-efficient decoding.
[0079] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0080] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0081] The entropy coding described above may be asymmetric number system (ANS) entropy coding.
[0082] The encoding may further include, for each encoding range, repeating or recursively performing the sequential division and calculation, and / or independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and specifying the order of each segment of the symbol sequence in the segment header.
[0083] The symbol sequence may include a bit sequence configured to control a graphics processing unit to generate lossless encoded executable instructions and / or at least a portion of an interactive graphic display.
[0084] The encoding further comprises, prior to encoding, segmenting the symbol sequence using entropy-based binary segmentation, wherein the entropy-based binary segmentation reduces or minimizes the sum of the entropy and size of the table of symbol occurrences of all resulting segments at each segmentation step.
[0085] One embodiment of a system for generating animated graphics includes at least one storage means, a symbol sequence that contributes at least partially to the generation of animated graphics, means for generating a symbol occurrence table based on the occurrence of symbols in the entropy-encoded symbol sequence, means for entropy-encode the symbol sequence using the symbol occurrence table, and means for encoding the symbol occurrence table using an integer value f, including (i) and (ii) below, (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encode each entry in the cumulative symbol occurrence table by sequentially dividing the encoding range of the cumulative symbol occurrence table by each intermediate index, and update f by encoding each intermediate index entry in the encoding range by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index) for each encoding range. Means for forming at least one data block representing the entropy-encoded symbol sequence and an integer value f representing the table of the encoded symbol occurrences, The system may also include means for storing the at least one data block in the storage device.
[0086] In such embodiments, the following configurations may also be adopted.
[0087] The system further comprises means for generating the second integer value m, wherein in (ii), a zero value may be used as the lower limit of the cumulative table of symbol occurrences, and the generated second integer value m may be used as the upper limit of the cumulative table of symbol occurrences.
[0088] The system further comprises means for generating the second integer value m, wherein in (ii), a zero value is inserted as the first entry in the cumulative table of symbol occurrences, and the generated second integer value m is inserted as the last entry in the cumulative table of symbol occurrences.
[0089] The header associated with the encoded symbol sequence may include the second integer value m as metadata.
[0090] In (ii) above, each entry in the cumulative table may be encoded by traversing the tree of the divided encoding ranges and performing multiplication at each node after the child nodes of each node.
[0091] The above (ii) may further include traversing the tree of the divided coding ranges in reverse order using depth-first method and multiplying at each node to encode each entry in the accumulation table, and / or representing the received integer value f as a bignum, and / or renormalizing it to enable faster and more memory-efficient encoding.
[0092] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0093] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0094] The entropy coding described above may be asymmetric number system (ANS) entropy coding.
[0095] In (ii) above, the sequential partitioning and calculation may be repeated and / or recursively performed for each of the encoding ranges. and / or means for independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence and specifying the order of each segment of the symbol sequence in the segment header may be further provided.
[0096] The symbol sequence may include lossless encoded executable instructions.
[0097] The symbol sequence may include a bit sequence configured to control at least one graphics processing unit to generate at least a portion of an interactive graphic display.
[0098] Prior to encoding, the method further includes segmenting the symbol sequence using entropy-based binary segmentation, wherein the entropy-based binary segmentation may reduce or minimize the sum of the entropy and size of the table of symbol occurrences for all resulting segments at each segmentation step.
[0099] An embodiment of the program provides a computer with means for accessing an integer value f that encodes a table of symbol occurrences, and means for decoding the table of symbol occurrences using the integer value f, including the following (i) and (ii): (i) The decoding range of the cumulative symbol occurrence table is sequentially divided by each intermediate index to decode each entry in the cumulative symbol occurrence table, and for each decoding range, the entry of the first index + f mod (entry of the last index - entry of the first index + 1) is calculated from the decoded entry in the cumulative symbol occurrence table to decode the entry of each intermediate index in the decoding range, and f div (entry of the last index - entry of the first index + 1) is calculated to update f. (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. It may be provided.
[0100] In such embodiments, the following configurations may also be adopted.
[0101] The means of receiving a symbol sequence entropy encoded using a symbol occurrence table, and the computer further functions as a means of entropy decoding the received encoded symbol sequence by applying the calculated symbol occurrence table, and / or streaming data representing at least a portion of a graphical user interaction using at least a portion of the entropy-decoded symbol sequence, and / or performing at least a portion of the entropy-decoded symbol sequence, and / or streaming information based on at least a portion of the entropy-decoded symbol sequence.
[0102] The computer may also be made to function as a means for receiving a second integer value m, and in (i) above, zero may be used as the lower limit of the cumulative table of symbol occurrences, and the received second integer value m may be used as the upper limit of the cumulative table of symbol occurrences.
[0103] The computer may also function as a means for receiving a second integer value m, and in (i), it may insert a zero value as the first entry in the cumulative table of symbol occurrences and insert the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0104] The second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0105] In (i) above, each entry in the cumulative table may be decoded by traversing the tree of the divided decoded ranges and performing division at each node before each child node of each node in the tree, and / or the entries in the cumulative table may be decoded by traversing the tree of the divided decoded ranges in a depth-first order and performing division at each node in the tree.
[0106] In such embodiments, the following configurations may also be adopted.
[0107] The received integer value f may be represented as a bignum.
[0108] This may further include renormalization to enable faster and more memory-efficient decoding.
[0109] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0110] When using f, the entry in the symbol occurrence table may be restored from the integer value f using only integer operations, shifts, logical operations, loads, and stores.
[0111] The entropy decoding described above may be an asymmetric number system (ANS) entropy decoding.
[0112] In (i) above, the sequential division and calculation may be repeated for each of the decoding ranges, and / or the sequential division and calculation may be performed recursively for each of the decoding ranges.
[0113] The computer may also be used as a means to independently decode each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and to reconstruct the symbol sequence based on the segment header.
[0114] An embodiment of a method for operating a cloud-based device includes sending commands and / or control signals to a remotely located decoder processor and / or decoder processing circuit via at least one network and / or communication link, the commands and / or control signals to access an integer value f that encodes a table of symbol occurrences, and to decode the table of symbol occurrences using the integer value f, including (i) and (ii) below: (i) The decoding range of the cumulative symbol occurrence table is sequentially divided by each intermediate index to decode each entry in the cumulative symbol occurrence table, and for each decoding range, the entry of the first index + f mod (entry of the last index - entry of the first index + 1) is calculated from the decoded entry in the cumulative symbol occurrence table to decode the entry of each intermediate index in the decoding range, and f div (entry of the last index - entry of the first index + 1) is calculated to update f. (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. The system may perform an operation that includes entropy decoding the encoded symbol sequence by applying the calculated symbol occurrence table, and receiving visual and / or audio information generated or provided using the entropy-decoded symbol sequence, at least partially, via the at least one network and / or communication link.
[0115] In such embodiments, the following configurations may also be adopted.
[0116] The reception may include receiving data representing at least a portion of at least one graphical presentation based at least partially on the entropy-decoded symbol sequence.
[0117] The method described above may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0118] The method may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0119] The second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0120] The method may further include decrypting each entry in the accumulation table by traversing a tree of divided decryption ranges and performing division at each node before each child node of the tree. Each entry in the accumulation table may also be decrypted by traversing the tree of divided decryption ranges sequentially in a depth-first manner and performing division at each node of the tree.
[0121] The received integer value f may be represented as a bignum.
[0122] The method may further include renormalization to enable faster and more memory-efficient decoding.
[0123] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0124] When using the received integer f, the entry in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0125] The entropy decoding described above may be an asymmetric number system (ANS) entropy decoding.
[0126] The method may further include: repeating or recursively performing the sequential division and calculation for each decoded range, and / or independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and reconstructing the symbol sequence based on the segment header, and / or executing instructions lostless by decoding the received entropy-encoded symbol sequence on at least one processor, and / or generating at least a portion of an interactive graphic display using at least one graphics processing unit based at least partially on the graphic data lostless by decoding the received entropy-encoded symbol sequence.
[0127] All of the features described above can be used in combination with other features, or combinations of other features. [Brief explanation of the drawing]
[0128] [Figure 1] A diagram illustrating the conventional LZ4 / ANS encoding process. [Figure 2A] A diagram illustrating an example of an encoding and decoding system. [Figure 2B] A diagram illustrating an example of an encoding and decoding system. [Figure 3] A diagram illustrating an example of a new LZ4 compression / ANS entropy coding process. [Figure 4] A schematic diagram illustrating an example of encoding and decoding a table of symbol occurrences of size 4. The encoding of the entire table is f=147. [Figure 5A] A diagram illustrating an example of a series of encoding steps. [Figure 5B] A diagram illustrating an example of a series of decoding steps. [Figure 5C]A diagram illustrating an example of the encoding and decoding steps. [Figure 6] This figure shows an example of a forward path for estimating the compression size of the left-hand child segment. [Figure 7] This figure shows an example of a reverse path for estimating the compression size of the right-hand child segment. [Figure 8] A diagram showing an example of the sum of the estimated compression sizes of two child segments. The index of the smallest point in this sum represents the optimal cut point. [Figure 9] A schematic diagram illustrating an example of segmentation. Each square represents a segment in a column. S(n) is the estimated compressed size of the segment at index n, calculated as the sum of its zeroth-order entropy and the size of the compressed byte occurrence table. [Figure 10] A diagram showing an example of the conventional LZ4 block sequence format. [Figure 10A] A diagram showing an example of the conventional LZ4 block sequence format. [Figure 11] A schematic diagram illustrating an example of the new encoding of LZ4 blocks. [Figure 12A] A schematic diagram of an example compressed file format. [Figure 12B] A schematic diagram of an example compressed file format. [Figure 12C] A diagram showing an example of a file header format. [Figure 12D] A diagram showing an example of a block header format. [Figure 12E] A diagram showing an example of a stream header format. [Figure 12F] A diagram showing an example of a segment header format. [Figure 13A] A diagram showing an example of use. [Figure 13B] A diagram showing an example of use. [Figure 13C] A diagram showing an example of use. [Figure 13D] A diagram showing an example of use. [Figure 13E] A diagram showing an example of use. [Figure 13F]A diagram showing an example of use. [Figure 13G] A diagram showing an example of use. [Figure 13H] A diagram showing an example of use. [Figure 14A] A flowchart showing an example of the operation performed by the application server in Figure 13H. [Figure 14B] A flowchart illustrating an example of the operation performed by the presentation system in Figure 13H. [Modes for carrying out the invention]
[0129] Examples of encoding / decoding systems
[0130] Figures 2A and 2B show an example of an encoding and decoding system. One or more input files 50 (which may be stored in a storage medium) containing a sequence of symbols are encoded by an encoding device 56 to produce a compressed data stream or data file 54. The compressed data stream or data file 54 is communicated from the encoding device 56 to one or more decoding devices 58. The decoding devices 58 may be located remotely from the encoding device 56 or together with the encoding device. The communication medium for the communication of the compressed data stream from the encoding device 56 to the decoding devices 58 may be a memory storage device and / or a network and / or a wireless link and / or a cable and / or a signal path and / or any other configuration for the communication of digital data from one component to one or more other components.
[0131] Each decoding device 58 decodes the compressed data stream or data file 54 to restore the input file 52. In an exemplary embodiment, since the compression is lossless, the recovered input file is a perfect match to the original input file. In an illustrated non-limiting embodiment, the decoding device 58 may restore one or more input files 52 for use in generating real-time or other graphics presentations, such as interactive video games.
[0132] Figure 2B shows an encoding device 56 and a decoding device 58, each comprising a processing configuration consisting of one or more central processing units (CPUs) and / or one or more graphics processing units (GPUs) and / or one or more processing circuits. In some use cases, the decoding device 58 preferably comprises one or more custom-designed hardware such as application-specific integrated circuits (ASICs), and the encoding device 56 preferably comprises one or more CPUs and / or GPUs, and one or more non-temporary memory devices that store encoding instructions executed by these CPUs and / or GPUs. However, the configuration is not limited to these. In some use cases, the encoding device 56 and the decoding device 58 may each comprise software that runs on one or more processors and is stored in non-temporary memory. In other use cases, both the encoding device 56 and the decoding device 58 may consist of hardware circuits provided by one or more ASICs (e.g., consisting of transistor-based logic gates, arithmetic units, registers, etc.) or other hardware configurations.
[0133] In some embodiments, the encoding device 56 and the decoding device 58 are the same device (or are in such a common package) that can operate in encoding and decoding modes. Such a device capable of both encoding and decoding is generally called a “codec”. In other embodiments, the encoding device 56 has a different structure from the decoding device 58, with the encoding device 56 performing only encoding and not decoding, and the decoding device 58 performing only decoding and not encoding.
[0134] As shown in Figure 3, the encoding device 56 losslessly encodes the input file 10 into a compressed entropy-encoded file 14 using both LZ4 compression and ANS entropy coding. That is, in an exemplary embodiment, the encoding device may receive an input file that has already been compressed with LZ4, or it may compress the file using LZ4 compression. The encoding device 56 performs entropy coding on the compressed input file, which consists of a sequence of symbols, and converts it into the corresponding entropy code. Similarly, the decoding device 58 entropy-decodes the entropy-encoded file 14 to restore the compressed input file. The restored input file may then be decompressed using LZ4 to restore the original uncompressed input file.
[0135] In one example embodiment, the encoding device 56 entropy encodes the compressed file, and the codebook or table 16 used to restore the entropy encoded file is itself encoded / compressed using cumulative interpolation encoding techniques, for example, based on "binary interpolation encoding" ("BIC"). Therefore, the encoding device 56 losslessly encodes the codebook or table 16 and generates compact encoded data for communication to the decoding device 58. The decoding device 58 decodes the encoded data to restore the codebook or table F, and uses it to decode the entropy encoded file 14 and restore the original file 10.
[0136] Entropy table compression
[0137] Entropy coding may include creating a symbol occurrence table F (also called a "codebook"). The following method (Algorithm 1) may be used to compress the symbol occurrence table F. • Calculate the cumulative values of F in table C (Figure 3, reference numeral 18). The values in table C are recursively encoded using cumulative interpolation coding such as binary interpolation coding ("BIC") to generate encoded data, i.e., the stored integer value f.
[0138] Further information on BIC can be found, for example, in Moffat et al., "Binary Interpolative Coding for Effective Index Compression." Information Retrieval 3, 25-47(2000).doi.org / 10.1023 / A:1013002601898, link.springer.com / article / 10.1023 / A:1013002601898; Turpin et al., Housekeeping for prefix coding, IEEE Transactions on Communications 48(4):622-628, 48(4):622-628 (May 2000 DOI:10.1109 / 26.843129); Moffat et al., Large-Alphabet Semi-Static Entropy Coding Via Asymmetric Numeral Systems, ACM Transactions on Information Systems 38(4) May 2020 DOI:10.1145 / 3397175; Trotman, "Compressing Inverted "Files," Information Retrieval 6, 5-19 (2003).
[0139] In the configuration example shown in Figure 3, the encoding of table C (and therefore table F) is represented by the integer f(20). Thus, the integer value f constitutes the encoded data of table F for symbol occurrences. This integer f can be very large, and generally its size is unknown beforehand, nor is the amount of memory required to store it. To solve this problem, in one embodiment, a "bignum" structure ( / / en.wikipedia.org / wiki / Arbitrary-precision_arithmetic) can be used to represent an arbitrary-precision integer (other alternative representations can be used in other embodiments). If the bignum is divided in each decoding step, it actually means that multiple divisions are performed. For example, if the bignum is represented by n 32-bit values, n divisions are required. To achieve faster and more memory-efficient decoding, a "renormalization" step can be added to each encoding and decoding step. Renormalization avoids performing operations on very large integers by keeping the encoded values within a manageable small range throughout the encoding / decoding process. To keep the above integer values within a small range, one approach is to write the least significant bit to a buffer each time the integer value exceeds a threshold during encoding. In this case, each decoding step only requires a single division of a relatively small integer (and reading bits from the buffer as needed), instead of performing division by very large integers or multiple divisions of small integers when using a bignum structure. While releasing bits early in this way may slightly reduce the compression ratio, it is generally negligible compared to speed and memory efficiency. Renormalization is often used to improve ANS coding (graphallthethings.com / posts / streaming-ans-explained / #:~:text=Streaming%20and%20normalization). Using such renormalization makes the computation more efficient in some embodiments, but in other embodiments, repeated division may be used instead at each step (for example, when speed is not a concern or when implemented with high-speed hardware).
[0140] Furthermore, this non-limiting embodiment assumes the following: Since the symbol sequence is encoded as an 8-bit symbol, table F(16) contains 256 elements. The proposed embodiment can be easily generalized to a table with 2^k (k>0) elements (where k is the size of the symbol in bits), or to a table of any size with minor modifications such as padding leading zeros to return to the case of powers of 2. The number of symbols m in the symbol sequence, i.e., the total number of occurrences in table F(16) and the last value in table C(18), is known at the time of decoding and is provided to the decoder, so it does not need to be encoded. This is a reasonable assumption in most real-world use cases where the data file or message to be encoded is predetermined and not randomly generated in real time during encoding, especially since entropy encoders like ANS require the above value to begin decoding. More precisely, the number of symbols m is needed to decompress the compressed file and is therefore stored in the compressed file. Thus, both the ANS decoder and the interpolation decoder obtain this value when they receive a compressed file containing the above value. This value can then be used by the interpolation decoder as the last value in table C. In a non-limiting embodiment, this value is stored in header metadata preceding the encoded data f in the symbol occurrence table. For example, in Figures 12A-12B, each "segment data" (616, 618) consists of entropy-encoded data s of a symbol sequence and interpolation-encoded data f of the corresponding symbol occurrence table used for entropy encoding, preceded by a segment header (608) containing metadata necessary for decoding the segment data. In this example file format, the code number m (used as the input integer value m of the interpolation decoder) is stored in the segment header (608) as "[u8] Raw data size". In other embodiments, this number may be sent to the interpolation decoder by another method, such as by sending it together with the encoded data of the symbol occurrence table.
[0141] The algorithm will be explained below using Python-oriented pseudocode. In particular, as shown in Algorithm 1 and Algorithm 2, when one function is defined inside another function, the inner function can access the variables of the outer function as if they were "global" variables. We want all calls to the recursive function to update the same encoded data as if they were "shared" by each other. The implementation may differ depending on the programming language. For example, in C or C++, the algorithm can be implemented using two independent functions and pointers to table C and encoded data f.
[0142] Algorithm 1: Cumulative Interpolation Coding (Recursive Embodiment) JPEG2026092652000002.jpg161170
[0143] Algorithm 2: Cumulative Interpolation Decoding (Recursive Embodiment) JPEG2026092652000003.jpg183170
[0144] Note
[0145] As can be seen from the above, in the embodiment, f is updated from the entries in the cumulative table at each coding step (intermediate entries are coded). In the embodiment, it is not necessary to generate entries, and only the integer f is updated. Therefore, the coding process of the embodiment updates f at each coding step by coding the intermediate index entries by calculating f × (entry in the last index - entry in the first index + 1) + (entry in the intermediate index - entry in the first index) from the cumulative table of symbol occurrences.
[0146] This differs from a decoding in which, in each decoding step, the following first and second operations are performed to generate entries and update f: (1) from the cumulative table of partially decoded symbol occurrences, the entry for the first index + f mod (entry for the last index - entry for the first index + 1) is calculated to decode the entry for the intermediate index in the decoding range; and (2) f div (entry for the last index - entry for the first index + 1) is calculated to update f.
[0147] Examples
[0148] Figure 4 shows an example of encoding and decoding of table C, which is derived from table F with m=10 and size 4. Since the value 10 is known during decoding, only the three values less than 10 need to be encoded. In simple encoding, The above three values are encoded in JPEG2026092652000004.jpg6170 (┌·┐ is the ceiling function, see en.wikipedia.org / wiki / Floor_and_ceiling_functions). This means that a total of 3 × 4 = 12 bits are required to encode Table C. However, as shown in Figure 1, in this embodiment, the above three values are encoded stepwise and sequentially (for example, iteratively in one embodiment) into a sequence of intermediate representations, resulting in the integer f = 147, which means that Table C is This means it is encoded as JPEG2026092652000005.jpg5170.
[0149] More specifically, Figure 4 shows an example of the encoding process used to encode the input file table F, where the representation 102 of the input file table F is shown as a histogram of arrays of values F0, F1, F2, and F3, each having an integer number of occurrences of 3, 1, 2, and 4, respectively.
[0150] A C array 104 consisting of 257 zero values is defined as above (C1=F0, C i =Ci-1 +F i-1 etc.), i min is defined as the first index of the range, i max It is defined as the last index in the range.
[0151] Since the value 10 is known during decoding, only the three values less than 10 are encoded. See 106. Interpolation coding techniques like BIC are used in three iterations as an operation on table C, encoding the three values as a single encoded integer 147.
[0152] 0x(6+1)+2=2 (Calculation step 110)
[0153] 2x(4+1)+3=13 (Calculation step 112)
[0154] 13 x (10 + 1) + 4 = 147 (Calculation step 114)
[0155] In the right-hand portion of Figure 4, the decoding process begins with the value 10 being known (see array 116) and receives the value 147. Then, during the decoding process, these decoding steps are performed to reconstruct each intermediate table C shown on the left.
[0156] 147mod(10+1)=4 (decoding step 116a) generates sequence 118 which matches the predefined portion in intermediate sequence 104.
[0157] 147 ÷ (10 + 1) = 13 (Decoding step 118a)
[0158] By 13mod(4+1)=3 (decoding step 118b), sequence 120 is obtained that matches the predefined portion of intermediate C sequence 106.
[0159] 13div(4+1)=2 (Decoding step 120a)
[0160] By 2mod(6+1)=2 (decoding step 120b), sequence 122 is obtained that matches the predefined portion of intermediate C sequence 108.
[0161] 2div(6+1)=0 (decoding step 122a) yields sequence 124, which is a perfect match to the original F sequence 102 (i.e., the original frequency sequence is restored without loss).
[0162] In the example above, the encoding is dynamic / adaptive, and the operation of f (in the case of an encoder) can change for each operation.
[0163] JPEG2026092652000006.jpg6170
[0164] For reference, in Figure 4, the changes are "6" → "4" → "10" (the order is reversed in the case of decoding). This operation (in the decoder) divides the received integer value by a dynamically changing value, yielding a series of remainders. This can also be described as the value changing depending on the maximum and minimum values of the calculation range.
[0165] Another aspect is that the algorithms described above are recursive and executed iteratively, and such recursive program code is elegant (compact and efficient). However, instead, it is also possible to execute them using a configuration that describes each operation "sequentially," for example, using inline code instead of loops or recursion (i.e., functions that call themselves), i.e., "(multiple) sequential operations." On the hardware side, data may be passed through the same circuit multiple times, or a series of sequential operation circuits such as a pipeline may be provided, or both may be used.
[0166] Example: Compression of symbol sequences
[0167] To compress a sequence of symbols (e.g., a file), simply integrate the above algorithm into the ANS encoding / decoding process described above.
[0168] Algorithm 3: Encoding of Symbol Sequences input: -S: A column of any size for symbols Calculate the symbol appearance table F (Figure 5A, Block 152). The ANS encoder is used to encode S from F to obtain the symbol sequence encoded data s (Figure 5A, Block 154). Algorithm 1 is used to encode F and obtain table-encoded data f (Figure 5A, Block 156). Concatenating s and f yields the encoded segment S' (Figure 5A, Block 158). Output: S'
[0169] Algorithm 4: Decoding of Symbol Sequences input: -S': A sequence of arbitrary size encoded with Algorithm 5 S' is split to obtain symbol sequence encoded data s and table encoded data f (Figure 5B, block 162). Algorithm 2 is used to decode f and obtain the symbol occurrence table F (Figure 5B, block 164). The ANS decoder decodes s from F to obtain the decoded segment S (Figure 5B, Block 166). Output: S (Figure 5B, Block 168)
[0170] Figure 5C is an overview of an example of the overall encoding and decoding steps, which can be performed by the same components operated by the same parties, by the same components operated by different parties, or by different components operated by different parties. In this example, the encoding step and the decoding step of table F are characterized as a “cumulative interpolation algorithm.” In certain embodiments, the “cumulative interpolation algorithm” may also be referred to by those skilled in the art as “binary interpolation encoding” (BIC).
[0171] An example of binary segmentation
[0172] When the symbol distribution changes significantly within a sequence of symbols, a higher compression ratio can sometimes be achieved by dividing the sequence into multiple segments with uniform distributions and compressing these segments individually. To do this, sequences of symbols exhibiting significant changes in distribution are cut out. Detecting such "change points" in the probability distribution of a stochastic process (a sequence of random variables) is a well-known problem called change point detection. See, for example, en.wikipedia.org / wiki / Change_detection. Here, we propose a custom greedy algorithm using top-down binary segmentation.
[0173] The segmentation algorithm of this application divides a symbol sequence into two segments if the sum of the estimated compression sizes of the two segments is less than the estimated compression size of the symbol sequence. To do this, the symbol sequence is iterated through, and for each added symbol, the (0th order) entropy of the underlying segment is calculated. This gives, for each symbol, the estimated compression size of the first of the two segments (the left child segment) if it were decided to cut the sequence at that location. In practice, to reduce computation time, this evaluation is performed for every N symbols.
[0174] To estimate the compression size of the second segment (the rightmost child segment), we perform the same operation while traversing the symbol sequence in reverse order. The entropy of the symbol sequence, calculated from the occurrences of symbols, is the same regardless of the direction of iteration. Next, we add the two estimates obtained for each symbol and select the cut point that minimizes the sum.
[0175] Once the cut points are determined, the sum of the compressed sizes of the two resulting child segments is compared to the compressed size of the parent segment using the proposed compression method. It is not necessary to actually compress the segments to do this. (0th order) entropy estimates the compressed size of a column with approximately accuracy using an ANS encoder with a frequency table as a two-part code, and does not include the storage size of the ANS table itself. Therefore, the ANS table, which has already been calculated for entropy, can be compressed using a cumulative interpolation algorithm, and the segment's entropy can be added to its compressed size to obtain the segment's compressed size. Next, if the sum of the compressed sizes of the child segments is less than the compressed size of the parent segment, segment splitting is performed; otherwise, it is not.
[0176] When segmentation is performed, the same algorithm is recursively applied to the two child segments, gradually building a segment tree. See, for example, en.wikipedia.org / wiki / Segment_tree. At the end of the algorithm, we can obtain the leaf segments in the segment tree. Since node segments are cut only when they are useful, the leaf segments represent the optimal segmentation provided by the algorithm in the segment tree, as shown in Figure 9.
[0177] Figures 6, 7, 8, and 9 show an example of finding a break point in a byte sequence. This sequence was generated by concatenating two sequences obtained by randomly selecting bytes according to two different Gaussian distributions. The first sequence is 12,000 bytes long, and the second sequence is 8,000 bytes long. Therefore, the entire sequence has a size of 20,000 bytes, and the distribution changes around the 12,000th byte. As shown below, the algorithm clearly identifies a break point around the 12,000th byte.
[0178] When segmenting a symbol sequence using this binary segmentation method, the compression and decompression algorithms for the symbol sequence are as follows.
[0179] Algorithm 5 Encoding of Symbol Sequences by Segment Division Input: - S: A sequence of symbols of any size Segment S using binary segment division to obtain segments (S i ) i=1···N . For each segment S i : Encode S using Algorithm 3 to obtain an encoded segment S i ’. i Concatenate the encoded segments (S i ’) to obtain an encoded sequence S’. i=1···N Output: S’
[0180] Algorithm 6 Decoding of Sequences by Segment Division Input: - S’: A sequence of any size encoded by Algorithm 5 Divide S’ to obtain encoded segments (S i ’). (i=1···N) For each encoded segment S i ’: Decode S i ’ using Algorithm 4 to obtain a decoded segment S i . Concatenate the decoded segments (S i ) to obtain a decoded sequence S i=1···N . Output: S
[0181] In Algorithm 5, the concatenation of encoded segments includes storing one or more specific headers, which enables the encoded sequence to be divided into encoded segments during decoding. The above describes a detailed configuration example, but there are several methods for this.
[0182] As mentioned earlier, the majority of the segmentation work is performed on the encoder side. However, the decoder is at least "aware" that it is operating on segments, as it concatenates the decoded segments in the appropriate order to create a continuous file or stream.
[0183] LZ4 block compression
[0184] We propose applying the above compression method to LZ4 compression. As described in the LZ4 documentation at github.com / lz4 / lz4 / blob / dev / doc / lz4_Block_format.md, and as schematically shown in Figures 10 and 10A, an LZ4 compressed block consists of "sequences," and each sequence consists of the following five streams. • Token • Literal length • Literal • Offset, and Match length
[0185] These streams are described in detail in the LZ4 documentation and the blog post "LZ4 Explanation" (fastcompression.blogspot.com / 2011 / 05 / lz4-explained.html). Since an LZ4 block consists of many such sequences, we group the different streams of all block sequences into five groups. Then, for each group, we concatenate its streams into a single sequence and compress it using algorithm 5 described above. Depending on the size of each group of streams, we may compress only some of them.
[0186] This method achieves a much better compression ratio than LZ4 alone (experiments show an additional compression of 21.2% ± 2.5%) and also enables faster decompression.
[0187] Figure 11 is an overview of an exemplary algorithm for encoding an LZ4 block. Figure 11 also shows all the encoding algorithms described above. In this example, file X502 is analyzed by the processor using a conventional LZ4 encoder 504 to generate an LZ4 block 506 containing multiple LZ4 sequences, and multiple files 508A, 508B, 508C, 508D, and 508E are generated. Each of these files 508 is processed by algorithm 5, which divides each file into a segment file 512 as described above. This generates multiple files 512(S1) to 512(Sn) for each of 508A, 508B, 508C, 508D, and 508E. Each of the segment files 512(S1) to 512(Sn) is processed by algorithm 3 using ANS entropy encoding to generate entropy encoded data (integer s i Algorithm 1 generates 514), and processes the symbol occurrence table F of the entropy-encoded segment file as described above using interpolation coding, and an integer f i Algorithm 3 generates an integer s i and integer f i Concatenate the files S' i It generates the following: Then, from file S1', 516(S'1) to file S n Multiple files up to 516(S'n) are concatenated to form file S'520, which has the format shown in Figures 12A to 12B. Each file from file A', 522A to file E'522E corresponds to file S', 520 (if file A, 508A is processed by algorithm 5, file S', 520 is used as file A', 522A). The resulting files 522A to 522E are concatenated and stored in file X'524, which has the format shown in Figures 12A to 12B.
[0188] Figures 12A-12B show the file format of compressed file 610. Compressed file 610 has the following hierarchical structure. The compressed file 610 is constructed by concatenating the file header 602 (see Figure 12C) with the file data 612. The file data 612 comprises one or more blocks, each consisting of a block header 604 (see Figure 12D) and block data 614, which are concatenated together. Each block data 614 comprises one or more streams 607, each consisting of a stream header 606 (see Figure 12E) and stream data 609, respectively. Each stream data 609 comprises one or more segments, each consisting of a segment header 608 (see Figure 12F) and segment data 618, respectively.
[0189] In the illustrated example, there are multiple blocks 614(0), ..., 614(z). Each block 614 contains multiple streams 607. For example, block 614(0) contains streams 607(0), ..., 607(4), and block 614(z) contains streams 607(5), ..., 607(n). Each block 614 may contain the same number of streams 607 or a different number of streams.
[0190] In the illustrated example, each stream 607 contains multiple segments, each containing a segment header 608 and segment data 618. For example, stream 609(0) includes segment header 608(0)(0) and associated segment data 618(0)(0), ...segment header 608(0)(i) and associated segment data 618(0)(i). Similarly, stream 609(1) includes segment header 608(1)(0) and associated segment data 618(1)(0), ...segment header 608(1)(j) and associated segment data 618(1)(j). In the illustrated example, stream 609(n) includes segment header 608(n)(0) and associated segment data 618(n)(0), ...segment header 608(n)(t) and associated segment data 618(n)(t). The integer values i, j, k, l, m, n, p, q, r, s, and t can be the same or different.
[0191] Each stream data from file data 612 in Figures 12A-12B corresponds to files A', 522A through E', 522E in Figure 11. The stream data within a stream may include segments 616 each preceded by a segment header 608. Segment data 616a, 616b, 616c, 616d, 616j in Figure 12A (corresponding to 618a, 618b, 618c, 618d, 618k in Figure 12B) corresponds to files S_1' and 516(S'1) in Figure 11, respectively, because all the initial segment data are present in those stream data. Files A'-E' actually correspond to each stream data.
[0192] Examples of the meaning of the "u" values shown in the headers 12C, 12D, 12E, and 12F are shown below as illustrative embodiments.
[0193] u32: Unsigned integer holding 32 bits of data.
[0194] u8: Unsigned integer holding 8 bits of data
[0195] u6: Unsigned integer holding 6 bits of data
[0196] u4: Unsigned integer holding 4 bits of data
[0197] u2: An unsigned integer that holds 2 bits of data.
[0198] [u8]: Array of u8 values
[0199] The stream header 606 shown in Figure 12E has two fields: "u2 Additional stream size in bytes" and "[u8] Additional stream size b6...bN (arbitrary)". Here, if the size of the "stream data" (in bytes) fits within 6 bits (b0...b5), that is, if the maximum size is 63 bytes, then "[u8] Additional stream size b6...bN (arbitrary)" is empty and "u2 Additional stream size in bytes" is 0. If the "stream data" exceeds 63 bytes (which is very likely), more than 6 bits are used to encode that size. For example, if the size is 100KB, 17 bits are used to encode that size (log2(100000)=16.61), meaning 11 bits are added, so 2 bytes (u8) are added. In this case, "[u8] Additional stream size b6...bN" includes 2 bytes (b6...b21, a table of two u8s), and "u2 Number of bytes for additional stream size" is 2, telling the decoder that it needs to read these 2 bytes in addition after "u6 Stream size b0...b5" to obtain the complete stream size. Therefore, the decoder concatenates the next 2 bytes (b6...b21) to the first 6 bits (b0...b5) to obtain the stream size (b0...b21 in binary representation, representing the integer 100000).
[0200] The data format shown in Figures 12A / 12B is not the only way to easily "embed" a compressed file in another file without storing some or all of the illustrated headers. For example, when embedding an encoded file in a game compression file, only the stream may be stored without storing the file header 602, block header 604, stream header 606, or segment header 608.
[0201] In one embodiment, data in the illustrated format may be stored in a non-temporary memory device and sent from the encoder to the decoder. For example, Figure 13A shows an example of sending encoded data from an encoding device to a decoding device via any type of connection. Figure 13B also shows an example of sending encoded data from an encoding device to a decoding device via a network connection. Decoding by the decoder is performed in the reverse procedure, and the decoding device can use the decoded data by storing it in at least one non-temporary memory device as instructions or computer code to be executed by at least one processor. Figure 13C also shows an intermediate application server that receives an encoded compressed data file from an encoding device and provides the encoded compressed data file to one or more application execution systems via a network. Each application execution system includes a decoder that decodes the encoded compressed data file and uses the decoded data to produce output (e.g., by execution). In Figure 13C, the intermediate application server does not need to decode the encoded compressed data file; instead, it may store the encoded compressed data file "as received" for provision to the application execution server. Furthermore, Figure 13D shows another embodiment in which the application server decodes the encoded compressed data file, then re-encodes the data, and provides the encoded compressed data file to the application execution system.
[0202] Figure 13E shows yet another embodiment, in which the application development system provides data files to the application server via a network, the application server encodes the data files, and provides the encoded compressed data files to the application execution system via the network or the like. Figure 13F shows yet another embodiment, in which the application development system provides data files to the application server via a route other than a network, the application server encodes the data files, and provides the encoded compressed data files to the application execution system via the network or the like.
[0203] Example I: Decryption Method
[0204] In one embodiment, the decoding method is performed using at least one processor and / or processing circuit, and the decoding method may include receiving a symbol sequence entropy coded using a symbol occurrence table, receiving an integer value f coded the symbol occurrence table, decoding the symbol occurrence table using the received integer value f, including (i) and (ii) below, and entropy coding the received coded symbol sequence by applying the coded symbol occurrence table. (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating f div (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences.
[0205] To clarify, the "symbol occurrence table" mentioned first above refers to Table F, and not to the cumulative Table C, in the embodiments described in detail below. Specifically, the cumulative interpolation coding / decoding in the embodiments includes the conversion between Table F and Table C, as described in (ii) above (hence the word "cumulative"). Therefore, in the embodiments, Table C is decoded at the end of (i), and Table F is decoded at the end of (ii). Thus, (i) + (ii) decodes Table F. In other words, it is as follows:
[0206] <<Cumulative interpolation decoding>> decodes table F using the following procedure.
[0207] i) Decode table C using interpolation decoding.
[0208] ii) Calculate Table F from Table C.
[0209] In one embodiment, the decoding may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0210] In one embodiment, the decoding may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0211] In one embodiment, the received second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0212] In one embodiment, each entry in the accumulation table may be decoded by traversing the tree of the divided decoded ranges and performing division at each node before each child node of the tree. Each entry in the accumulation table may be decoded by traversing the tree of the divided decoded ranges in a depth-first manner and performing division at each node of the tree.
[0213] In one embodiment, the received integer value f may be represented as a bignum.
[0214] In one embodiment, the process may further include renormalization to enable faster and more memory-efficient decoding.
[0215] In one embodiment, the encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the sequence of LZ4 blocks.
[0216] In one embodiment, when using the received integer value f, the entry in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0217] In one embodiment, the entropy decoding may be an asymmetric coding system (ANS) entropy decoding.
[0218] In one embodiment, the sequential division and calculation may be further performed repeatedly or recursively for each of the decoding ranges.
[0219] In one embodiment, the method may further include independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and reconstructing the symbol sequence based on the segment headers.
[0220] In one embodiment, the method may further include decoding the received entropy-encoded symbol sequence to recover the lossless instructions, which are then executed by at least one processor.
[0221] In one embodiment, the method may further include generating at least a portion of an interactive graphic display using at least one graphics processing unit, based at least partially on the lossless restored graphic data obtained by decoding the received entropy-encoded symbol sequence.
[0222] Example 2: Decoder
[0223] In one embodiment, the decoder may include means for accessing an integer value f that encodes a table of symbol occurrences, and means for performing an operation to decode the table of symbol occurrences using the integer value f, including (i) and (ii) below. (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating f div (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences.
[0224] In such embodiments, the following configurations may also be adopted.
[0225] The system may further include means for receiving a symbol sequence that has been entropy encoded using a symbol occurrence table, means for entropy decoding the encoded symbol sequence by applying the calculated symbol occurrence table, and / or means for performing operations on at least a portion of the entropy-decoded symbol sequence, and / or means for streaming at least a portion of the entropy-decoded symbol sequence and / or information derived therefrom.
[0226] The operation described above may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0227] The operation described above may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0228] The operation may further include obtaining the second integer value m to be received from the header metadata of the encoded symbol sequence.
[0229] The operation described above may further include decrypting each entry in the cumulative table by traversing a tree of divided decryption ranges and performing division at each node before each child node of each node in the tree, and / or decrypting each entry in the cumulative table by traversing the tree of divided decryption ranges in depth-first order and performing division at each node in the tree.
[0230] The received integer value f may be represented as a bignum.
[0231] The operation described above may further include renormalization to enable faster and more memory-efficient decoding.
[0232] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0233] When using the aforementioned integer value f, the entries in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0234] The entropy decoding described above may be asymmetric code number (ANS) entropy decoding.
[0235] The operation may further include, for each decoding range, repeating or recursively performing the sequential division and calculation, and / or independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, reconstructing the symbol sequence based on the segment header, and / or executing instructions that have been losslessly restored by decoding the received entropy-encoded symbol sequence, and / or generating at least a portion of an interactive graphic display using at least one graphics processing unit, at least partially based on the graphic data that has been losslessly restored by decoding the received entropy-encoded symbol sequence.
[0236] Example 3: Decoding System
[0237] One embodiment of a system for generating animated graphics may include at least one storage means for storing (i) at least one data block representing a symbol sequence entropy encoded using a symbol occurrence table, and (ii) an integer value f encoding the symbol occurrence table; means for performing a decoding operation of the symbol occurrence table using the integer value f, including (i) and (ii) below; and means for entropy decoding the encoded symbol sequence represented by the at least one data block by applying the decoded symbol occurrence table, wherein at least a portion of the entropy-decoded symbol sequence represents a graphic and / or graphic animation operation, and the system may also include means for generating animated graphics based at least partially on the entropy-decoded symbol sequence. (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating fdiv (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences.
[0238] In such embodiments, the following configurations may also be adopted.
[0239] The operation described above may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0240] The operation may further include receiving a second integer value m, inserting a zero value as the first entry of the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry of the cumulative table of symbol occurrences.
[0241] The second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0242] The operation may further include decoding each entry of the cumulative table by traversing the tree of the divided decoding range and performing division at each node before the child nodes of each node of the tree.
[0243] The operation may further include decoding each entry of the cumulative table by traversing the tree of the divided decoding range in depth-first order and performing division at each node of the tree.
[0244] The integer value f may be represented as a bignum.
[0245] The operation may further include renormalizing so that faster and more memory-efficient decoding is possible.
[0246] The encoded symbol sequence may include a set of different components including tokens of a sequence of LZ4 blocks, literal lengths, literals, offsets, and match lengths.
[0247] When using the integer value f, the entries of the symbol occurrence table may be restored using only integer arithmetic, shifts, logical operations, loads, and stores.
[0248] The entropy decoding may be asymmetric numeral system (ANS) entropy decoding.
[0249] The operation may include, for each decoding range, iterating or recursively performing the sequential division and calculation, and / or independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, reconstructing the symbol sequence based on the segment header, and / or executing instructions that have been lostlessly restored by decoding the received entropy-encoded symbol sequence, and / or at least partially decoding the entropy-encoded symbol sequence in a cloud environment.
[0250] The means for generating the animated graphics may generate at least a portion of an interactive graphic display based at least partially on graphic data that is losslessly restored by decoding the received entropy-encoded symbol sequence.
[0251] The means for generating the animation graphic may include an emulator that generates the animation graphic based at least partially on the entropy-decoded symbol sequence.
[0252] Example 4: Operation method of a decryption cloud-based server or computing device
[0253] Embodiments of a method for operating a cloud-based device include sending commands and / or control signals to a remotely located decoder processor and / or decoder processing circuit via at least one network and / or communication link, the commands and / or control signals causing the remotely located decoder processor and / or decoder processing circuit to perform operations including: accessing an integer value f that encodes a table of symbol occurrences; decoding the table of symbol occurrences using the integer value f, including (i) and (ii) below; entropy decoding the encoded symbol sequence by applying the calculated table of symbol occurrences; and receiving visual and / or audio information generated or provided via at least one network and / or communication link using the entropy-decoded symbol sequence. (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating f div (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences.
[0254] As shown in Figure 13H, in one embodiment, an application server or other computing device includes a decoding system or decoder located “in the cloud,” i.e., in a server farm or other remote location, and connected to communicate with other remote devices via one or more networks or other communication connections. The server or other computing device including the decoding system or decoder may receive or otherwise provide encoded (e.g., compressed) digital data files for decoding. Here, the term “digital data” may include image data, audio data, computer or processor instructions, computer programs, directives, constants, and information of any kind. Thus, the term “data file” is not limited to non-executable data and may include, for example, one or more computer programs executable by one or more processors. A data file may or may not include a file header and may or may not be configured as one or more specific standardized types of “data file formats,” such as those listed at wikipedia.org / wiki / List_of_file_formats.
[0255] The encoded compressed data files may be provided / generated by the encoding system or encoder of the type described above, and such encoding system or encoder may or may not be part of the application development system, or may or may not be operationally coupled or connected to the application development system. For example, the application development system may produce, generate, and / or create data files with or without human involvement or intervention. In one embodiment, the encoded compressed data files (e.g., computer instructions or programs, processor instructions, GPU instructions, image data such as texture data) may be provided from the encoding system or encoder to the decoding system or decoder in any way, such as a digital network, communication link, physically portable tangible storage medium such as a flash drive, or in any other convenient manner. The server or other computing device may include one or more non-volatile storage devices configured to store or hold the encoded compressed data files after the data files have been provided to the decoding system or decoder. In another embodiment, the application development server and the application server located on the cloud may coexist with each other (e.g., they may include an integrated or linked cloud-based content authorization and distribution system such as an e-shop).
[0256] A decoding system or decoder deployed on the cloud may include one or more processors and / or processing circuits and / or graphics processing units that execute instructions stored in a non-temporary memory device. By executing such instructions, the one or more processors and / or processing circuits and / or graphics processing units access a stored encoded compressed data file, decode the stored encoded compressed data file in the manner described in detail above, and convert it into a decoded uncompressed data file. The one or more processors and / or processing circuits and / or graphics processing units may execute such stored decoding instructions directly, interpret or transform the stored instructions to perform the encoding described above, emulate a hardware and / or software decoder, or optionally combine these methods to provide the decoder functionality described in detail above. Alternatively, or in addition to the above, the decoding process may be incorporated into a hardware state machine or other hardware circuit decoder configuration. Alternatively, part of the decoding process may consist of instructions executable by one or more processors, and another part of the decoding process may consist of one or more hardware circuits such as an ASIC or state machine.
[0257] As shown in Figure 13H, a decoding system or decoder may be activated, started, or controlled to perform decoding in response to one or more control signals received by a cloud-based server or other computing device via a network or other communication link from a remotely located device, such as a presentation system. See Figure 14A, blocks 702, 704, and 706. Thus, in one embodiment, the presentation system may generate remote commands or remote control signals (see Figure 14B, blocks 802 and 804), and when such commands or signals are sent to a cloud-based server or other computing device via a network or communication link, the cloud-based decoding system or decoder may perform decoding in response to such commands or signals (Figure 14A, blocks 702, 704, and 706). The presentation system may generate such commands or control signals automatically, or in response to human requests, such as playing a particular game or using a particular application. See Figure 14B, blocks 802 and 804. In response to such human requests, the presentation system may send a command or control signal to a decryption system or decoder located in the cloud, specifying a stored encoded and compressed data file or related item corresponding to the human request. The decryption system or decoder may then access the specific stored encoded and compressed data file, decrypt it, and store the decrypted and uncompressed data file in non-temporary memory (Figure 14A, blocks 702, 704, 706). In this way, for example, a human user of the presentation system can initiate the decryption of data files related to a specific game the user wants to play or a specific application the user wants to use, "on demand."
[0258] A decoding system or decoder located in the cloud decodes the stored encoded (compressed) data file (as described in detail above) to generate a corresponding decoded (uncompressed) data file. Then, a server or other computing device located in the cloud stores the decoded (uncompressed) data file in one or more non-temporary memory devices such as register files, NAND flash devices, magnetic memory devices, or semiconductor read / write memory (RAM) (Figure 14A, Block 706). Such stored decoded uncompressed data files become available for processing and / or transmission by the server or other computing device located in the cloud.
[0259] In one embodiment, a cloud-based server or other computing device may, for example, access decrypted (uncompressed) data files stored in memory (or, in another embodiment, retrieve these files from another source such as a remote source) (Figure 14A, Block 708), and execute, process, or use computer instructions, computer programs, processor instructions, GPU instructions, image data, or other information in the decrypted or uncompressed data files to automatically generate a visual and / or audio presentation (Figure 14A, Block 710). For example, the visual and / or audio presentation may consist of a series of image frames and / or a series of audio frames that provide one or more graphical user interfaces. As an example, a server processor and / or processor circuit and / or graphics processing unit located on the cloud may directly execute or process the computer instructions, computer programs, processor instructions, GPU instructions, or other information in the decrypted or uncompressed data files to generate a visual and / or audio presentation. In another example, a server processor and / or processor circuit and / or graphics processing unit located in the cloud may emulate other hardware and / or software to generate a visual and / or audio presentation based at least partially on computer instructions, computer programs, processor instructions, GPU instructions, and other information from a decoded, uncompressed data file. See, for example, US11911700;USP10926174;USP9662574;USP20230356078;Game Console GPUs, pp.187-237, Peddie, J., The History of the GPU - New Developments, Springer, Cham. doi.org / 10.1007 / 978-3-031-14047-1_4(2022).
[0260] The server processor and / or processing circuit and / or graphics processing unit located in the cloud may be the same one used to perform the decryption process described above, or it may be a different processor and / or processing circuit and / or graphics processing unit. In one embodiment, the server processor and / or processing circuit and / or graphics processing unit located in the cloud may be remotely controlled or operated to execute or process computer instructions, computer programs, processor instructions, GPU instructions, or other information in the decrypted uncompressed data file. For example, the server processor and / or processing circuit and / or graphics processing unit located in the cloud may be started, controlled or operated by a command or control signal to execute computer instructions, computer programs, processor instructions, GPU instructions, or other information in the decrypted uncompressed data file. Such a command or control signal may be provided, for example, by a presentation system and transmitted over a network or other communication link to a server or other computing device located in the cloud (see Figure 14B, blocks 802, 804). In one embodiment, the command or control signal may specify, for example, a particular game or other application. In one embodiment, the same command or control signal may be used to cause a decoding system or decoder to decode one or more encoded compressed data files associated with a game, and the decoded decompressed data files may be used to generate a graphical audio and / or visual presentation corresponding to the game or other application (see Figure 14A).
[0261] In one embodiment, a server or other computing device located in the cloud may generate a visual and / or audio presentation through interaction with one, two, or more human users (and / or automated “bots” in one embodiment) via an associated presentation system. For example, a presentation system (which in one embodiment may include a game console, a portable or mobile game device, a smartphone, a tablet, or other computing device capable of providing human-recognizable output) may each have at least one corresponding human user, the human user operating an input device such as a joystick, a pointer-type device, a mouse-type device, or digital control buttons. The presentation system may generate input signals based on the human user's operation of the input device and transmit them (or information based thereon) in real time or near real time (i.e., with low latency) from the presentation system to a server or other computing device located in the cloud via one or more networks or other communication links. Different presentation systems may be located in different locations, and each presentation system may simultaneously and independently generate input signals based on the operation of human users (and / or bots) on physical and / or virtual input devices in, for, or associated with that presentation system.
[0262] A server or other computing device located in the cloud may use such input signals to control, at least partially, a graphical audio and / or visual presentation or related information corresponding to a game or other application. For example, a server or other computing device located in the cloud may use a first input signal provided by a first presentation system to control a first game character or first avatar and / or a first virtual camera / audio position viewpoint in a game, and use a second input signal provided by a second presentation system to control a second game character or second avatar and / or a second virtual camera / audio position viewpoint in the game. In response to the first and second input signals, the server or other computing device located in the cloud may generate data representing at least a portion of the same or different visual and / or audio display sequences to provide, for example, a multiplayer game or multi-user application in which different players or users experience the same or different visual and / or audio presentation (e.g., from different virtual camera / audio position viewpoints). See Figure 14A, blocks 710, 712, 714; see Figure 14B, blocks 802, 804. A server or other computing device located in the cloud may update the visual and / or audio presentation, for example, every 1 / 30th of a second or 1 / 60th of a second, or at other frequencies, to provide information to the presentation system, which may then use this information to provide animated video and audio in response to first and second input signals. In one embodiment, an application server may generate video and / or audio frames and stream them to the presentation system, and a thin-client presentation system may perform the presentation. In another exemplary embodiment, each presentation system may locally execute a game process in response to locally (and possibly remotely) provided user input, and an application server may provide coordination between the presentation systems.In yet another embodiment, the application server provides a download service to the presentation system by downloading encoded and / or decoded data, such as executable code and / or control and adjustment information, that the presentation system uses to generate a user presentation locally.
[0263] In one embodiment, a server or other computing device located on the cloud can stream or otherwise transmit information related to such visual and / or audio presentations to one or any number of presentation systems for presentation to the user. See FIG. 14A, block 710. As described above, such a cloud-based server or other computing device can directly access and use or execute the decoded instructions or data on a processor or other hardware, or translate or interpret and use the decoded instructions or data, or execute an emulator configured to be compatible with the decoded instructions or data. See FIG. 14A, blocks 708, 710.
[0264] In one embodiment, the emulator generates the animation graphic based at least in part on the entropy-decoded symbol sequence.
[0265] In one embodiment, the at least one processor and / or processing circuit is configured to at least partially decode the symbol sequence in a cloud environment.
[0266] In such an embodiment, the following configuration may further be adopted.
[0267] The receiving may include receiving data representing at least a part of at least one graphical presentation based at least in part on the entropy-decoded symbol sequence.
[0268] The method described above may further include receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0269] The method may further include receiving a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0270] The second integer value m may be obtained from the header metadata of the encoded symbol sequence.
[0271] The method may further include decrypting each entry in the accumulation table by traversing the tree of the divided decryption ranges and performing division at each node before each child node of the tree. Each entry in the accumulation table may also be decrypted by traversing the tree of the divided decryption ranges in a depth-first manner and performing division at each node of the tree.
[0272] The received integer value f may be represented as a bignum.
[0273] The method may further include renormalization to enable faster and more memory-efficient decoding.
[0274] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0275] When using the received integer f, the entry in the symbol occurrence table may be restored using only integer operations, shifts, logical operations, loads, and stores.
[0276] The entropy decoding described above may be asymmetric coding system (ANS) entropy decoding.
[0277] The method may further include: repeating or recursively performing the sequential division and calculation for each decoded range, and / or independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and reconstructing the symbol sequence based on the segment header, and / or executing instructions lostless by decoding the received entropy-encoded symbol sequence on at least one processor, and / or generating at least a portion of an interactive graphic display using at least one graphics processing unit based at least partially on the graphic data lostless by decoding the received entropy-encoded symbol sequence.
[0278] Example 5: Encoding Method
[0279] Exemplary embodiments of an encoding method performed using at least one processor and / or processing circuit may include: generating a table of symbol occurrences based on the occurrences of symbols in a symbol sequence to be entropy encoded; entropy encoding the symbol sequence using the table of symbol occurrences; encoding the table of symbol occurrences using an integer value f, including (i) and (ii) below; and forming at least one data block representing the entropy encoded symbol sequence and the obtained integer value f that encodes the table of symbol occurrences. (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encoding each entry in the cumulative symbol occurrences table by sequentially dividing the encoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each encoding range, the entries of each intermediate index in the encoding range are encoded by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index) and updating f.
[0280] The above corresponds to exemplary embodiments, which are described in detail below.
[0281] <<Cumulative interpolation coding>> encodes table F in the following way:
[0282] Calculate Table C from Table F
[0283] Encode table C using interpolation coding.
[0284] In such embodiments, the following configurations may also be adopted.
[0285] The encoding may further include generating a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0286] The encoding may further include generating a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the generated second integer value m as the last entry in the cumulative table of symbol occurrences.
[0287] The encoding may include including the second integer value m as metadata in the header associated with the encoded symbol sequence.
[0288] The encoding may further include encoding each entry in the cumulative table by traversing the tree of the divided encoding ranges and performing multiplication at each node after the child nodes of each node.
[0289] The encoding may further include encoding the entries in the cumulative table by traversing the tree of the divided encoding ranges in reverse order using a depth-first method and performing multiplication at each node.
[0290] The encoding may further include representing the generated integer value f as a bignum.
[0291] The encoding may further include renormalization to enable faster and more memory-efficient decoding.
[0292] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0293] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0294] The entropy coding may be an asymmetric coding system (ANS) entropy coding.
[0295] The encoding may further include, for each encoding range, repeating or recursively performing the sequential division and calculation, and / or independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and specifying the order of each segment of the symbol sequence in the segment header.
[0296] The symbol sequence may include a bit sequence configured to control a graphics processing unit to generate lossless encoded executable instructions and / or at least a portion of an interactive graphic display.
[0297] The encoding further comprises, prior to encoding, segmenting the symbol sequence using entropy-based binary segmentation, wherein the entropy-based binary segmentation reduces or minimizes the sum of the entropy and size of the table of symbol occurrences of all resulting segments at each segmentation step.
[0298] Example 6: Encoder
[0299] In other embodiments, the encoder may include means for generating a symbol occurrence table based on the occurrence of symbols in a symbol sequence that is entropy encoded, which is a symbol sequence that contributes at least partially to the generation of an animated graphic; means for entropy encoding the symbol sequence using the symbol occurrence table; means for encoding the symbol occurrence table using an integer value f, which includes the following operations (i) and (ii); means for forming at least one data block representing the entropy encoded symbol sequence and the integer value f representing the encoded symbol occurrence table; and means for storing the at least one data block in a storage means. (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encoding each entry in the cumulative symbol occurrences table by sequentially dividing the encoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each encoding range, the intermediate index entry in the encoding range is encoded by calculating f × (entry in the last index - entry in the first index + 1) + (entry in the intermediate index - entry in the first index), and f is updated.
[0300] In such embodiments, the following configurations may also be adopted.
[0301] The operation described above may further include generating a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0302] The operation described above may further include generating a second integer value m, inserting a zero value as the first entry in the cumulative table of symbol occurrences, and inserting the generated second integer value m as the last entry in the cumulative table of symbol occurrences.
[0303] The operation may include including the second integer value m as metadata in the header associated with the encoded symbol sequence.
[0304] The operation may further include encoding each entry in the cumulative table by traversing the tree of the divided encoding ranges and performing multiplication at each node after the child nodes of each node.
[0305] The method may further include traversing the tree of the divided coding ranges in reverse order using a depth-first approach and performing multiplication at each node to encode each entry in the cumulative table, and / or representing the generated integer value f as a bignum, and / or renormalizing it to enable faster and more memory-efficient encoding.
[0306] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0307] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0308] The entropy coding may be an asymmetric coding system (ANS) entropy coding.
[0309] The method may further include, for each encoding range, repeating and / or recursively performing the sequential division and calculation, and / or independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and specifying the order of each segment of the symbol sequence in the segment header.
[0310] The symbol sequence may include lossless encoded executable instructions.
[0311] The symbol sequence may include a bit sequence configured to control at least one graphics processing unit to generate at least a portion of an interactive graphic display.
[0312] The method further includes segmenting the symbol sequence using entropy-based binary segmentation before encoding, wherein the entropy-based binary segmentation may reduce or minimize the sum of the entropy and size of the table of symbol occurrences for all resulting segments at each segmentation step.
[0313] Example 7: Encoding System
[0314] One embodiment of a system for generating animated graphics may include: means for generating a symbol occurrence table based on the occurrence of symbols in a symbol sequence that is entropy encoded, which at least partially contributes to the generation of animated graphics; means for entropy encoding the symbol sequence using the symbol occurrence table; means for encoding the symbol occurrence table using an integer value f, which includes the following operations (i) and (ii); means for forming at least one data block representing the entropy encoded symbol sequence and the integer value f representing the encoded symbol occurrence table; and means for storing the at least one data block in the storage device. (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encode each entry in the cumulative symbol occurrence table by sequentially dividing the encoding range of the cumulative symbol occurrence table by each intermediate index, and update f by encoding the entries of each intermediate index in the encoding range by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index) for each encoding range.
[0315] In such embodiments, the following configurations may also be adopted.
[0316] The operation may further include means for generating a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0317] The operation further comprises means for generating a second integer value m, which inserts a zero value as the first entry in the cumulative table of symbol occurrences, The generated second integer value m may be inserted as the last entry in the cumulative table of symbol occurrences.
[0318] The operation may include the second integer value m as metadata in the header associated with the encoded symbol sequence.
[0319] The operation described above may involve traversing a tree of divided encoding ranges and encoding each entry in the cumulative table by performing multiplication at each node after the child nodes of each node.
[0320] The operation may further include traversing the tree of the divided coding ranges in reverse order using a depth-first approach and coding each entry in the cumulative table by multiplication at each node, and / or representing the received integer value f as a bignum, and / or renormalizing it to enable faster and more memory-efficient coding.
[0321] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0322] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0323] The entropy coding may be an asymmetric coding system (ANS) entropy coding.
[0324] The system may further provide means for iterating and / or recursively performing the sequential division and calculation for each of the aforementioned coding ranges, and / or means for independently coding each segment of the coded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and for specifying the order of each segment of the symbol sequence in the segment header.
[0325] The symbol sequence may include lossless encoded executable instructions.
[0326] The symbol sequence may include a bit sequence configured to control at least one graphics processing unit to generate at least a portion of an interactive graphic display.
[0327] The operation further includes, before encoding, segmenting the symbol sequence using entropy-based binary segmentation, wherein the entropy-based binary segmentation may reduce or minimize the sum of the entropy and size of the table of symbol occurrences for all resulting segments at each segmentation step.
[0328] Example 8: Program for Decryption
[0329] An embodiment of the program may involve a computer functioning as a means to access an integer value f that encodes a table of symbol occurrences, and as a means to decode the table of symbol occurrences using the integer value f, including the following (i) and (ii). (i) Decode each entry in the cumulative symbol occurrences table by sequentially dividing the decoding range of the cumulative symbol occurrences table by each intermediate index, wherein for each decoding range, calculate the entry of the first index + f mod (entry of the last index - entry of the first index + 1) from the decoded entry in the cumulative symbol occurrences table, decode the entry of each intermediate index in the decoding range, and update f by calculating f div (entry of the last index - entry of the first index + 1). (ii) Calculate the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences.
[0330] In such an embodiment, the computer may be instructed to perform the following actions:
[0331] The computer may function as a means for receiving a symbol sequence entropy encoded using a symbol occurrence table, a means for entropy decoding the encoded symbol sequence by applying the calculated symbol occurrence table, and / or a means for streaming data representing at least a portion of a graphical user interaction using at least a portion of the entropy-decoded symbol sequence, and / or a means for executing at least a portion of the entropy-decoded symbol sequence, and / or a means for streaming information based on at least a portion of the entropy-decoded symbol sequence.
[0332] The computer may also function as a means for receiving a second integer value m, and in (i), zero may be used as the lower limit of the cumulative table of symbol occurrences, and the received second integer value m may be used as the upper limit of the cumulative table of symbol occurrences.
[0333] The computer may further function as a means for receiving a second integer value m, and in (i), a zero value may be inserted as the first entry in the cumulative table of symbol occurrences, and the received second integer value m may be inserted as the last entry in the cumulative table of symbol occurrences.
[0334] The second integer value m to be received may be obtained from the header metadata of the encoded symbol sequence.
[0335] The computer may also function as a means for decrypting each entry in the cumulative table by traversing a tree of divided decryption ranges and performing division at each node before each child node of the tree, and / or a means for decrypting each entry in the cumulative table by sequentially traversing the tree of divided decryption ranges in a depth-first manner and performing division at each node of the tree.
[0336] In such embodiments, the following configurations may also be adopted.
[0337] The received integer value f may be represented as a bignum.
[0338] This may further include renormalization to enable faster and more memory-efficient decoding.
[0339] The encoded symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0340] When using f, the entry in the symbol occurrence table may be restored from the integer value f using only integer operations, shifts, logical operations, loads, and stores.
[0341] The entropy decoding described above may be asymmetric coding system (ANS) entropy decoding.
[0342] In (i) above, the sequential division and calculation may be repeated for each of the decoding ranges, and / or the sequential division and calculation may be performed recursively for each of the decoding ranges.
[0343] The computer may also function as a means for independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and for reconstructing the symbol sequence based on the segment header.
[0344] Example 9: Program for encoding
[0345] Embodiments of the program may include a means for generating a table of symbol occurrences based on the occurrences of symbols in a symbol sequence to be entropy coded, a means for entropy coding the symbol sequence using the table of symbol occurrences, and a means for coding the table of symbol occurrences using an integer value f, including (i) calculating a cumulative table of symbol occurrences from the table of symbol occurrences, and (ii) coding each entry in the cumulative table of symbol occurrences by sequentially dividing the coding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each coding range, the entry of each intermediate index in the coding range is coded by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index), thereby updating f, and forming at least one data block representing the entropy coded symbol sequence and the obtained integer value f that has been coded the table of symbol occurrences.
[0346] In such embodiments, the following configurations may also be adopted.
[0347] The computer may also be configured to function as a means for receiving a second integer value m, using zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
[0348] The computer may also function as a means for receiving a second integer value m, a means for inserting a zero value as the first entry in the cumulative table of symbol occurrences, and a means for inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
[0349] The encoding may include including the second integer value m as metadata in the header associated with the encoded symbol sequence.
[0350] The operation may further include encoding each entry in the cumulative table by traversing a tree of divided encoding ranges and performing multiplication at each node after the child nodes of each node.
[0351] The operation may further include encoding the entries in the cumulative table by traversing the tree of the divided encoding ranges in reverse order using a depth-first approach and performing multiplication at each node.
[0352] The operation described above may further include representing the received integer value f as a bignum.
[0353] The operation described above may further include renormalization to enable faster and more memory-efficient decoding.
[0354] The symbol sequence may include a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
[0355] When using the integer value f, entries in the symbol occurrence table may be encoded using only integer operations, shifts, logical operations, loads, and stores.
[0356] The entropy coding may be an asymmetric coding system (ANS) entropy coding.
[0357] The computer may further function as a means for iterating or recursively performing the sequential division and calculation for each of the aforementioned encoding ranges, and / or a means for independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment division on the symbol sequence, and for specifying the order of each segment of the symbol sequence in the segment header.
[0358] The symbol sequence may include a bit sequence configured to control a graphics processing unit to generate lossless encoded executable instructions and / or at least a portion of an interactive graphic display.
[0359] The operation further includes, before encoding, segmenting the symbol sequence using entropy-based binary segmentation, wherein the entropy-based binary segmentation may reduce or minimize the sum of the entropy and size of the table of symbol occurrences for all resulting segments at each segmentation step.
[0360] Example 10: The encoding device and the decoding device may be the same device.
[0361] Example 11: The encoding method and the decoding method may be combined as a common overall method.
[0362] Example 12: Algorithm 1 / Algorithm 2 for encoding / decoding an entropy table.
[0363] Example 13: The part of Algorithm 1 / Algorithm 2 that encodes / decodes a portion of the cumulative table.
[0364] Example 14: Algorithm 3 / Algorithm 4 for encoding / decoding symbol sequences of arbitrary length
[0365] Example 15: Algorithms 5 / 6 that improve compression ratio by encoding / decoding symbol sequences of arbitrary length using low-cost entropy-based binary segment partitioning.
[0366] Example 16: Algorithms 5 / 6 for encoding / decoding LZ4 blocks by grouping streams of LZ4 block sequences by type and encoding some or all of the groups independently.
[0367] Exemplary related items
[0368] Binary interpolation encoding:
[0369] Binary Interpolative Coding for Effective Index Compression: https: / / link.springer.com / article / 10.1023 / A:1013002601898
[0370] Housekeeping for Prefix Coding: https: / / www.researchgate.net / publication / 3160122
[0371] Large-Alphabet Semi-Static Entropy Coding Via Asymmetric Numeral Systems https: / / www.researchgate.net / publication / 342752784
[0372] Encoding of probability distributions for Asymmetric Numeral Systems https: / / www.researchgate.net / publication / 352373099
[0373] Binary segment partitioning:
[0374] Selective review of offline change point detection methods: https: / / arxiv.org / abs / 1801.00718
[0375] ruptures: change point detection in Python: https: / / arxiv.org / abs / 1801.00826
[0376] Change Point Detection with Copula Entropy based Two-Sample Test: https: / / arxiv.org / abs / 2403.07892
[0377] Change-point detection using the conditional entropy of ordinal patterns: https: / / arxiv.org / abs / 1510.01457
[0378] Optimal detection of changepoints with a linear computational cost: https: / / arxiv.org / abs / 1101.1438
[0379] Using an adaptive entropy-based threshold for change detection methods - Application to fault-tolerant fusion in collaborative mobile robotics: https: / / ieeexplore.ieee.org / document / 8820667
[0380] All patents and publications cited herein are incorporated by reference as expressly stated.
[0381] Although the present invention has been described above in terms of the most practical and preferred embodiments currently available, it should be understood that the present invention is not limited to the disclosed embodiments, but rather encompasses various modifications and equivalent configurations that fall within the spirit and scope of the appended claims.
Claims
1. A decoding method performed using at least one processor and / or processing circuit, Receiving an entropy-encoded symbol sequence using a symbol occurrence table, The system receives an integer value f that encodes the table of symbol occurrences, Using the received integer value f, decode the symbol occurrence table, which includes the following (i) and (ii): (i) Decode each entry in the cumulative table of symbol occurrences by sequentially dividing the decoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each decoding range, From the decoded entries in the cumulative table of symbol occurrences, The entry of the first index + f mod (the entry of the last index - the entry of the first index + 1) is calculated, and the entries of each intermediate index in the decoding range are decoded. Calculate f div (the entry of the last index - the entry of the first index + 1) and update f. (ii) Calculating the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. A decoding method comprising: entropy decoding the received encoded symbol sequence by applying the decoded symbol occurrence table.
2. It receives a second integer value m, The decoding method according to claim 1, further comprising using a zero value as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
3. It receives a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The decoding method according to claim 1, further comprising inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
4. The decoding method according to claim 2 or 3, wherein the received second integer value m is obtained from the header metadata of the encoded symbol sequence.
5. The decoding method according to any one of claims 1 to 3, further comprising traversing the tree of the divided decoding ranges and decoding each entry in the cumulative table by performing division at each node before each child node of each node in the tree.
6. The decoding method according to claim 5, wherein each entry in the cumulative table is decoded by sequentially traversing the tree of the divided decoding range in a depth-first order and performing division at each node of the tree.
7. The decoding method according to any one of claims 1 to 3, wherein the received integer value f is represented as bignum.
8. The decoding method according to any one of claims 1 to 3, further comprising renormalizing to enable faster and more memory-efficient decoding.
9. The decoding method according to any one of claims 1 to 3, wherein the encoded symbol sequence includes a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of the LZ4 block sequence.
10. The decoding method according to any one of claims 1 to 3, wherein when using the received integer f, the entry in the symbol occurrence table is restored using only integer operations, shifts, logical operations, loads, and stores.
11. The decoding method according to any one of claims 1 to 3, wherein the entropy decoding is asymmetric coding system (ANS) entropy decoding.
12. The decoding method according to any one of claims 1 to 3, further comprising repeating the sequential division and calculation for each of the aforementioned decoding ranges.
13. The decoding method according to any one of claims 1 to 3, further comprising recursively performing the sequential division and calculation for each of the aforementioned decoding ranges.
14. The decoding method according to any one of claims 1 to 3, further comprising independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and reconstructing the symbol sequence based on the segment header.
15. The decoding method according to any one of claims 1 to 3, further comprising executing instructions, which are losslessly restored by decoding the received entropy-encoded symbol sequence, on at least one processor.
16. The decoding method according to any one of claims 1 to 3, further comprising generating at least a portion of an interactive graphic display using at least one graphics processing device, based at least partially on the graphic data lostless by decoding the received entropy-encoded symbol sequence.
17. A system for generating animated graphics, A storage means for storing at least one data block representing a symbol sequence entropy-encoded using a symbol occurrence table, and an integer value f encoded from the symbol occurrence table, A means for performing a decoding operation on the symbol occurrence table, including the following (i) and (ii), using the integer value f; (i) Decode each entry in the cumulative table of symbol occurrences by sequentially dividing the decoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each decoding range, From the decoded entries in the cumulative table of symbol occurrences, calculate the entry of the first index + f mod (the entry of the last index - the entry of the first index + 1) and decode the entries of each intermediate index in the decoded range. Calculate f div (the entry of the last index - the entry of the first index + 1) and update f. (ii) Calculating the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. The system comprises means for entropy decoding the encoded symbol sequence represented by the at least one data block by applying the decoded symbol occurrence table, At least a portion of the entropy-decoded symbol sequence represents graphic and / or graphic animation behavior. A system further comprising means for generating an animated graphic based at least partially on the entropy-decoded symbol sequence.
18. The aforementioned operation is, It receives a second integer value m, The system according to claim 17, further comprising using a zero value as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
19. The aforementioned operation is, It receives a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The system according to claim 17, further comprising inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
20. The system according to claim 18 or 19, wherein the second integer value m is obtained from the header metadata of the encoded symbol sequence.
21. The system according to any one of claims 17 to 19, wherein the operation further comprises traversing the tree of the divided decryption ranges and decrypting each entry in the cumulative table by performing division at each node before each child node of each node in the tree.
22. The system according to claim 21, wherein the operation further comprises traversing the tree of the divided decryption ranges in depth-first order and performing division at each node of the tree to decrypt each entry in the cumulative table.
23. The system according to any one of claims 17 to 19, wherein the integer value f is represented as bignum.
24. The system according to any one of claims 17 to 19, further comprising renormalizing to enable faster and more memory-efficient decoding.
25. The system according to any one of claims 17 to 19, wherein the encoded symbol sequence comprises a set of different components including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
26. The system according to any one of claims 17 to 19, wherein when using the integer value f, the entry in the symbol occurrence table is restored using only integer operations, shifts, logical operations, loads, and stores.
27. The system according to any one of claims 17 to 19, wherein the entropy decoding is asymmetric coding system (ANS) entropy decoding.
28. The system according to any one of claims 17 to 19, wherein the operation further comprises repeating the sequential division and the calculation for each of the decoding ranges.
29. The system according to any one of claims 17 to 19, wherein the operation further includes recursively performing the sequential division and the calculation for each of the decoding ranges.
30. The system according to any one of claims 17 to 19, wherein the operation further comprises independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segmentation on the symbol sequence, and reconstructing the symbol sequence based on the segment header.
31. The system according to any one of claims 17 to 19, further comprising executing an instruction that is losslessly restored by decoding the received entropy-encoded symbol sequence.
32. The system according to any one of claims 17 to 19, wherein the means for generating the animated graphic generates at least a portion of an interactive graphic display based at least partially on graphic data that is losslessly restored by decoding the received entropy-encoded symbol sequence.
33. The system according to any one of claims 17 to 19, wherein the means for generating the animation graphic includes an emulator that generates the animation graphic at least partially based on the entropy-decoded symbol sequence.
34. The system according to any one of claims 17 to 19, wherein the operation further comprises at least partially decoding the entropy-encoded symbol sequence in a cloud environment.
35. An encoding method performed using at least one processor and / or processing circuit, This involves generating a symbol occurrence table based on the occurrences of symbols within an entropy-encoded symbol sequence, Entropy coding of the symbol sequence using the symbol occurrence table, The table of symbol occurrences, including (i) and (ii) below, is encoded using an integer value f, (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encoding each entry in the cumulative table of symbol occurrences by sequentially dividing the encoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each encoding range, The entries of each intermediate index within the encoding range are encoded by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index), and f is updated. An encoding method comprising forming at least one data block representing the entropy-encoded symbol sequence and the obtained integer value f, which encodes the table of symbol occurrences.
36. To generate a second integer value m, The encoding method according to claim 35, further comprising using a zero value as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
37. To generate a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The encoding method according to claim 35, further comprising inserting the generated second integer value m as the last entry in the cumulative table of symbol occurrences.
38. The encoding method according to claim 36 or 37, wherein the encoding includes including the second integer value m as metadata in a header associated with the encoded symbol sequence.
39. The encoding method according to any one of claims 35 to 37, further comprising traversing the tree of the divided encoding ranges and encoding each entry in the cumulative table by performing multiplication at each node after the child nodes of each node.
40. The encoding method according to claim 39, further comprising traversing the tree of the divided encoding ranges in reverse order using a depth-first approach and encoding each entry in the cumulative table by performing multiplication at each node.
41. The encoding method according to any one of claims 35 to 37, comprising representing the generated integer value f as bignum.
42. The encoding method according to any one of claims 35 to 37, further comprising renormalizing to enable faster and more memory-efficient decoding.
43. The encoding method according to any one of claims 35 to 37, wherein the symbol sequence includes a set of different components including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
44. The encoding method according to any one of claims 35 to 37, wherein when the integer value f is used, the entries in the symbol occurrence table are encoded using only integer operations, shifts, logical operations, loads, and stores.
45. The encoding method according to any one of claims 35 to 37, wherein the entropy encoding is asymmetric coding system (ANS) entropy encoding.
46. The encoding method according to any one of claims 35 to 37, further comprising repeating the sequential division and calculation for each of the encoding ranges.
47. The encoding method according to any one of claims 35 to 37, further comprising recursively performing the sequential division and calculation for each of the encoding ranges.
48. The encoding method according to any one of claims 35 to 37, further comprising independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and specifying the order of each segment of the symbol sequence in a segment header.
49. The encoding method according to claim 35, wherein the symbol sequence includes a lossless encoded executable instruction.
50. The encoding method according to any one of claims 35 to 37, wherein the symbol sequence includes a bit sequence configured to control a graphics processing device to generate at least a portion of an interactive graphic display.
51. The encoding method according to any one of claims 35 to 37, further comprising segmenting a symbol sequence using entropy-based binary segmentation before encoding, wherein the entropy-based binary segmentation reduces or minimizes the sum of the entropy and size of the table of symbol occurrences of all resulting segments at each segmentation step.
52. A sequence of symbols that contributes at least partially to the generation of animated graphics, and means for generating a table of symbol occurrences based on the occurrences of symbols in the sequence of symbols that are entropy encoded, Means for entropy encoding the symbol sequence using the symbol occurrence table, The means for encoding the symbol occurrence table using an integer value f, including the following operations (i) and (ii), (i) Calculate a cumulative table of symbol occurrences from the table of symbol occurrences. (ii) Encoding each entry in the cumulative table of symbol occurrences by sequentially dividing the encoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each encoding range, The entries of each intermediate index within the encoding range are encoded by calculating f × (entry of the last index - entry of the first index + 1) + (entry of each intermediate index - entry of the first index), and f is updated. Means for forming at least one data block representing the entropy-encoded symbol sequence and an integer value f representing the table of the encoded symbol occurrences, An encoder comprising means for storing at least one of the aforementioned data blocks in a storage means.
53. The aforementioned operation is, To generate a second integer value m, The encoder according to claim 52, further comprising using a zero value as the lower limit of the cumulative table of symbol occurrences, and using the generated second integer value m as the upper limit of the cumulative table of symbol occurrences.
54. The aforementioned operation is, To generate a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The encoder according to claim 52, further comprising inserting the generated second integer value m as the last entry in the cumulative table of symbol occurrences.
55. The encoder according to claim 53 or 54, wherein the operation includes including the second integer value m as metadata in a header associated with the encoded symbol sequence.
56. The encoder according to claim 53, further comprising the operation of encoding each entry in the cumulative table by traversing the tree of the divided encoding ranges and performing multiplication at each node after the child nodes of each node.
57. The encoder according to claim 56, further comprising the operation of encoding each entry in the cumulative table by traversing the tree of the divided encoding ranges in reverse order in depth-first order and performing multiplication at each node.
58. The encoder according to any one of claims 52 to 54, further comprising representing the generated integer value f as bigum.
59. The encoder according to any one of claims 52 to 54, further comprising renormalizing to enable faster and more memory-efficient decoding.
60. The encoder according to any one of claims 52 to 54, wherein the symbol sequence includes a set of different components, including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
61. The encoder according to any one of claims 52 to 54, wherein when the integer value f is used, the entries in the symbol occurrence table are encoded using only integer operations, shifts, logical operations, loads, and stores.
62. The encoder according to any one of claims 52 to 54, wherein the entropy coding is asymmetric coding system (ANS) entropy coding.
63. The encoder according to any one of claims 52 to 54, wherein the operation further comprises repeating the sequential division and the calculation for each of the coding ranges.
64. The encoder according to any one of claims 52 to 54, wherein the operation further includes recursively performing the sequential division and the calculation for each of the coding ranges.
65. The encoder according to any one of claims 52 to 54, further comprising independently encoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segmentation on the symbol sequence, and specifying the order of each segment of the symbol sequence in a segment header.
66. The encoder according to any one of claims 52 to 54, wherein the symbol sequence includes lossless encoded executable instructions.
67. The encoder according to any one of claims 52 to 54, wherein the symbol sequence includes a bit sequence configured to control at least one graphics processing device to generate at least a portion of an interactive graphic display.
68. The encoder according to any one of claims 52 to 54, wherein the operation further comprises, before encoding, segmenting the symbol sequence using entropy-based binary segmentation, the entropy-based binary segmentation reducing or minimizing the sum of the entropy and size of the table of symbol occurrences of all resulting segments at each segmentation step.
69. A means to access an integer value f encoded from a symbol occurrence table, Means for performing an operation to decode the symbol occurrence table, including the following (i) and (ii), using the integer value f; (i) Decode each entry in the cumulative table of symbol occurrences by sequentially dividing the decoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each decoding range, From the decoded entries in the cumulative table of symbol occurrences, calculate the entry of the first index + f mod (the entry of the last index - the entry of the first index + 1), and decode the entries of each intermediate index in the decoded range. Calculate f div (the entry of the last index - the entry of the first index + 1) and update f. (ii) Calculating the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. A decoder equipped with a decoder.
70. A means for receiving a symbol sequence that has been entropy-encoded using a symbol occurrence table, The decoder according to claim 69, further comprising means for entropy decoding an encoded symbol sequence by applying the calculated symbol occurrence table.
71. The decoder according to claim 70, further comprising means for performing at least a portion of the entropy-decoded symbol sequence.
72. The decoder according to claim 70, further comprising means for streaming at least a portion of the entropy-decoded symbol sequence and / or information derived therefrom.
73. The aforementioned operation is, It receives a second integer value m, The decoder according to any one of claims 69 to 72, further comprising using a zero value as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
74. The aforementioned operation is, It receives a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The decoder according to any one of claims 69 to 72, further comprising inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
75. The decoder according to claim 73 or 74, further comprising obtaining the second integer value m to be received from the header metadata of the encoded symbol sequence.
76. The decoder according to any one of claims 69 to 72, further comprising the operation of decoding the entries in the cumulative table by traversing the tree of the divided decoded ranges and performing division at each node before each child node of each node in the tree.
77. The decoder according to claim 76, further comprising the operation of sequentially traversing the tree of the divided decoding range in a depth-first manner and decoding each entry in the cumulative table by performing division at each node of the tree.
78. The decoder according to any one of claims 69 to 72, wherein the received integer value f is represented as bignum.
79. The decoder according to any one of claims 69 to 72, further comprising renormalizing to enable faster and more memory-efficient decoding.
80. The decoder according to any one of claims 69 to 72, wherein the encoded symbol sequence comprises a set of different components including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
81. A decoder according to any one of claims 69 to 72, wherein when using the integer value f, the entries in the symbol occurrence table are restored using only integer operations, shifts, logical operations, loads, and stores.
82. The decoder according to any one of claims 69 to 72, wherein the entropy decoding is asymmetric coding system (ANS) entropy decoding.
83. The decoder according to any one of claims 69 to 72, wherein the operation further comprises repeating the sequential division and the calculation for each of the decoding ranges.
84. The decoder according to any one of claims 69 to 72, wherein the operation further comprises recursively performing the sequential division and the calculation for each of the decoding ranges.
85. The decoder according to any one of claims 69 to 72, further comprising the operation of independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segmentation on the symbol sequence, and reconstructing the symbol sequence based on the segment header.
86. The decoder according to any one of claims 69 to 72, further comprising executing instructions lostless by decoding the received entropy-encoded symbol sequence on at least one processor.
87. The decoder according to any one of claims 69 to 72, further comprising generating at least a portion of an interactive graphic display using at least one graphics processing device, based at least in part on graphic data lostless by decoding the received entropy-encoded symbol sequence.
88. Computers, A means to access an integer value f encoded from a symbol occurrence table, Means for performing an operation to decode the symbol occurrence table, including the following (i) and (ii), using the integer value f; (i) Decode each entry in the cumulative table of symbol occurrences by sequentially dividing the decoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each decoding range, From the decoded entries in the cumulative table of symbol occurrences, calculate the entry of the first index + f mod (the entry of the last index - the entry of the first index + 1), and decode the entries of each intermediate index in the decoded range. Calculate f div (the entry of the last index - the entry of the first index + 1) and update f. (ii) Calculating the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. A program that makes something work.
89. The aforementioned computer further, A means for receiving a symbol sequence that has been entropy-encoded using a symbol occurrence table, The program according to claim 88, wherein the calculated symbol occurrence table is applied to the encoded symbol sequence to function as a means for entropy decoding.
90. The program according to claim 89, further comprising the computer being used as a means for streaming data representing at least a portion of a graphical user interaction using at least a portion of the entropy-decoded symbol sequence.
91. The program according to claim 89, further comprising the computer functioning as a means for executing at least a portion of the entropy-decoded symbol sequence.
92. The program according to claim 89, further comprising the computer functioning as a means for streaming information based on at least a portion of the entropy-decoded symbol sequence.
93. The aforementioned computer is further, It functions as a means of receiving a second integer value m. The program according to claim 88, wherein in (i) above, a value of zero is used as the lower limit of the cumulative table of symbol occurrences, and the received second integer value m is used as the upper limit of the cumulative table of symbol occurrences.
94. The aforementioned computer is further, It functions as a means of receiving a second integer value m. The program according to claim 88, wherein in (i) above, a zero value is inserted as the first entry in the cumulative table of symbol occurrences, and the received second integer value m is inserted as the last entry in the cumulative table of symbol occurrences.
95. The program according to claim 93 or 94, wherein the second integer value m is received from the header metadata of the encoded symbol sequence.
96. The program according to any one of claims 88 to 94, wherein the operation further comprises traversing the tree of the divided decryption ranges and decrypting each entry in the accumulation table by performing division at each node before each child node of each node in the tree.
97. The program according to claim 96, further comprising the operation of sequentially traversing the tree of the divided decryption range in a depth-first manner and performing division at each node of the tree to decrypt each entry in the accumulation table.
98. The program according to any one of claims 88 to 94, wherein the received integer value f is represented as bignum.
99. The program according to any one of claims 88 to 94, further comprising renormalizing to enable faster and more memory-efficient decoding.
100. The program according to any one of claims 89 to 94, wherein the encoded symbol sequence comprises a set of different components including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
101. The program according to any one of claims 88 to 94, wherein the operation restores an entry in the symbol occurrence table from the integer value f using only integer arithmetic, shifting, logical operations, loading, and storing.
102. The program according to any one of claims 89 to 94, wherein the entropy decoding is asymmetric coding system (ANS) entropy decoding.
103. The program according to any one of claims 88 to 94, wherein, in (i) above, the sequential division and calculation are repeated for each of the decoding ranges.
104. The program according to any one of claims 88 to 94, wherein, in (i) above, the sequential division and the calculation are performed recursively for each of the decoding ranges.
105. The program according to any one of claims 89 to 94, further comprising the computer being used as a means for independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and for reconstructing the symbol sequence based on the segment header.
106. A method comprising sending commands and / or control signals to a remotely located decoder processor and / or decoder processing circuit via at least one network and / or communication link, wherein the commands and / or control signals cause the remotely located decoder processor and / or decoder processing circuit to: (a) Accessing an integer value f that encodes the symbol occurrence table, (b) Decode the symbol occurrence table, including (i) and (ii) below, using the integer value f; (i) Decode each entry in the cumulative table of symbol occurrences by sequentially dividing the decoding range of the cumulative table of symbol occurrences by each intermediate index, wherein for each decoding range, From the decoded entries in the cumulative table of symbol occurrences, calculate the entry of the first index + f mod (the entry of the last index - the entry of the first index + 1), and decode the entries of each intermediate index in the decoded range. Calculate f div (the entry of the last index - the entry of the first index + 1) and update f. (ii) Calculating the symbol occurrence table from the decoded entries in the cumulative table of symbol occurrences. (c) Entropy decoding of the encoded symbol sequence by applying the calculated symbol occurrence table, A method for performing an operation that includes receiving visual and / or audio information generated or provided using the entropy-decoded symbol sequence, at least partially, via the at least one network and / or communication link.
107. The method according to claim 106, wherein the reception includes receiving data representing at least a portion of at least one graphical presentation based at least partially on the entropy-decoded symbol sequence.
108. It receives a second integer value m, The method according to claim 106, further comprising using a value of zero as the lower limit of the cumulative table of symbol occurrences, and using the received second integer value m as the upper limit of the cumulative table of symbol occurrences.
109. It receives a second integer value m, Inserting a zero value as the first entry in the cumulative table of symbol occurrences, The method according to claim 106, further comprising inserting the received second integer value m as the last entry in the cumulative table of symbol occurrences.
110. The method according to claim 108 or 109, wherein the second integer value m is obtained from the header metadata of the encoded symbol sequence.
111. The method according to any one of claims 106 to 109, further comprising traversing the tree of the divided decryption ranges and decrypting each entry in the cumulative table by performing division at each node before each child node of each node in the tree.
112. The method according to claim 111, wherein each entry in the cumulative table is decoded by sequentially traversing the tree of the divided decoded range in a depth-first order and performing division at each node of the tree.
113. The method according to any one of claims 106 to 109, wherein the received integer value f is represented as bignum.
114. The method according to any one of claims 106 to 109, further comprising renormalizing to enable faster and more memory-efficient decoding.
115. The method according to any one of claims 106 to 109, wherein the encoded symbol sequence comprises a set of different components including tokens, literal lengths, literals, offsets, and match lengths of a sequence of LZ4 blocks.
116. The method according to any one of claims 106 to 109, wherein when the integer value f is used, the entry in the symbol occurrence table is restored using only integer operations, shifts, logical operations, loads, and stores.
117. The method according to any one of claims 106 to 109, wherein the entropy decoding is asymmetric coding system (ANS) entropy decoding.
118. The method according to any one of claims 106 to 109, further comprising repeating the sequential division and calculation for each of the aforementioned decoding ranges.
119. The method according to any one of claims 106 to 109, further comprising recursively performing the sequential division and calculation for each of the aforementioned decoding ranges.
120. The method according to any one of claims 106 to 109, further comprising independently decoding each segment of the encoded symbol sequence obtained by performing entropy-based binary segment partitioning on the symbol sequence, and reconstructing the symbol sequence based on the segment header.
121. The method according to any one of claims 106 to 109, further comprising executing instructions, which are losslessly restored by decoding the received entropy-encoded symbol sequence, in at least one processor.
122. The method according to any one of claims 106 to 109, further comprising generating at least a portion of an interactive graphic display using at least one graphics processing device, based at least partially on graphic data lostless by decoding the received entropy-encoded symbol sequence.