DEVICES AND METHODS OF SOURCE-ENCODING AND DECODING OF DATA

20170250707 · 2017-08-31

    Inventors

    Cpc classification

    International classification

    Abstract

    An encoder for encoding data to generate corresponding encoded data including information indicative of a frequency, probability or range of one or more symbols to be represented in the encoded data. The encoder can include in the encoded data additional information indicative of whether information indicative of a frequency, probability or range for at least one symbol amongst the one or more symbols is in the encoded data. The encoder can include in the encoded data the additional information of whether information indicative of a frequency, probability or range for at least one symbol amongst the one or more symbols in the encoded data expressed as single availability bit information. The encoder can represent inclusion of information indicative of the frequency, probability or range information by use of a single availability bit value “7”, and non-inclusion of information indicative of the frequency, probability or range information by use of a single availability bit value “0”.

    Claims

    1. An encoder (20) for encoding data (D1, 10) to generate corresponding encoded data (E2, 30), wherein the encoded data (E2, 30) includes information of frequencies, probabilities or range values of symbols to be represented in the encoded data (E2, 30), characterized in that the encoder (20) is operable to include in the encoded data (E2, 30) additional information indicative of whether or not information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30).

    2. An encoder (20) as claimed in claim 1, characterized in that the encoder (20) is operable to include in the encoded data (E2, 30) the additional information indicative of whether or not the information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30) expressed as single availability bit information.

    3. An encoder (20) as claimed in claim 2, characterized in that the encoder (20) is operable to represent inclusion of the information of frequencies, probabilities or range values for the symbols in the encoded data (E2, 30) by use of a single availability bit value “1”, and non-inclusion of the information of frequencies, probabilities or range values for the symbols in the encoded data (E2, 30) by use of a single availability bit value “0”.

    4. An encoder (20) as claimed in claim 1, 2 or 3, characterized in that the information of frequencies, probabilities or range values of the symbols to be represented in the encoded data (E2, 30) is dynamically varied by the encoder (20) as a function of one or more characteristics of the data (D1, 10) to be encoded.

    5. An encoder (20) as claimed in claim 4, characterized in that the one or more characteristics includes at least one of: a type of the data (D1, 10), content of the data (D1, 10) and/or statistics of the data (D1, 10).

    6. An encoder (20) as claimed in claim 4 or 5, characterized in that the encoder (20) is operable to subdivide the data (D1, 10) to be encoded into a plurality of parts, and to generate individually for each part corresponding additional information indicative of whether or not information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30).

    7. An encoder (20) as claimed in any one of the preceding claims, characterized in that the encoder (20) is operable to analyze the data (D1, 10) to determine minimum (min) and maximum (max) values occurring therein, and information describing the minimum and maximum values is included by the encoder (20) into the encoded data (E2, 30), wherein the minimum (min) and maximum (max) values limit a range of possibly available symbol values when employing range coding.

    8. An encoder (20) as claimed in claim 7, characterized in that the encoder (20) is operable to express a first symbol and/or a last symbol present in the data (D1, 10) in the encoded data without use of an availability signal.

    9. An encoder (20) as claimed in any one of the preceding claims, characterized in that the encoder (20) is operable to modify an entropy of the data (D1, 10) to be encoded, prior to applying range encoding thereto to generate the encoded data (E2, 30).

    10. An encoder (20) as claimed in any one of the preceding claims, characterized in that the encoder (20) is operable to encode the data (D1, 10) corresponding to at least one of: captured audio signals, genetic sequencing data, captured video signals, captured images, text data, seismographic data, sensor signals, analog-to-digital (ADC) converted data, biomedical signal data, calendar data, economic data, mathematical data.

    11. A method of encoding data (D1, 10) in an encoder (20) to generate corresponding encoded data (E2, 30), wherein the encoded data (E2, 30) includes information of frequencies, probabilities or range values of symbols to be represented in the encoded data (E2, 30), characterized in that the method includes: using the encoder (20) to include in the encoded data (E2, 30) additional information indicative of whether or not information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30).

    12. A method as claimed in claim 11, characterized in that the method further includes: using the encoder (20) to include in the encoded data (E2, 30) the additional information indicative of whether or not the information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30) expressed as single availability bit information.

    13. A method as claimed in claim 12, characterized in that the method further includes: using the encoder (20) to represent inclusion of the information of frequencies, probabilities or range values in the encoded data (E2, 30) by use of a single availability bit value “1”, and non-inclusion of the information of frequencies, probabilities or range values in the encoded data (E2, 30) by use of a single availability bit value “0”.

    14. A method as claimed in claim 11, 12 or 13, characterized in that the method includes using the encoder (20) to vary dynamically the information of frequencies, probabilities or range values of the symbols to be represented in the encoded data (E2, 30) as a function of a nature of the data (D1, 10) to be encoded.

    15. A method as claimed in claim 14, characterized in that the method includes using the encoder (20) to subdivide the data (D1, 10) to be encoded into a plurality of parts, and to generate individually for each part corresponding additional information indicative of whether or not information of frequencies, probabilities or range values for the symbols is included in the encoded data (E2, 30).

    16. A method as claimed in any one of claims 11 to 15, characterized in that the method includes encoding the data (D1, 10) corresponding to at least one of: genetic sequence information, captured audio signals, captured video signals, captured images, text data, seismographic data, sensor signals, analog-to-digital (ADC) converted data, biomedical signal data, calendar data, economic data, mathematical data.

    17. A decoder (80) for decoding encoded data (E2, 30) generated by an encoder (20) as claimed in any one of claims 1 to 10, for generating decoded data (D3, 90).

    18. A decoder (80) as claimed in claim 17, characterized in that the decoder (80) includes data processing hardware which is operable: (a) to receive an availability signal, (b) to receive transmitted frequencies, probabilities or range values in encoded data (E2, 30); (c) to construct a complete frequency table, a probability table or a range table from (a) and (b); and (d) to use the complete frequency table, probability table or range table to range decode the encoded data (E2, 30) to generate the decoded output data (D3, 90).

    19. A decoder (80) as claimed in claim 17 or 18, characterized in that the decoder (80) is operable to execute transcoding upon the decoded output data (D3) to generate corresponding transcoded data.

    20. A method of decoding encoded data (E2, 30) in a decoder (80), characterized in that the method of decoding encoded data (E2, 30) includes performing an inverse of steps of a method as claimed in any one of claims 11 to 16.

    21. A method as claimed in claim 20, characterized in that the method includes: (a) receiving an availability signal; (b) receiving transmitted frequencies, probabilities or range values in encoded data (E2, 30); (c) constructing a complete frequency table, a probability table or a range table from steps (a) and (b); and (d) using the complete frequency table, probability table or range table to range decode the encoded data (E2, 30) to generate the decoded output data (D3, 90).

    22. A method as claimed in claim 20 or 21, characterized in that the method includes executing transcoding upon the decoded output data (D3) to generate corresponding transcoded data.

    23. A codec (20, 80; 95) including at least one encoder (20) as claimed in any one of claims 1 to 10, and a decoder (80) as claimed in any one of claims 17 to 19.

    24. A computer program product comprising a non-transitory computer-readable storage medium having computer-readable instructions stored thereon, the computer-readable instructions being executable by computing hardware of an encoder (20) as claimed in any one of claims 1 to 10, for implementing a method as claimed in any one of claims 11 to 16.

    25. A computer program product comprising a non-transitory computer-readable storage medium having computer-readable instructions stored thereon, the computer-readable instructions being executable by computing hardware of a decoder (80) as claimed in claim 17 for implementing a method as claimed in claim 20.

    Description

    DESCRIPTION OF THE DIAGRAMS

    [0058] Embodiments of the present disclosure will now be described, by way of example only, with reference to the following diagrams wherein:

    [0059] FIG. 1 is an illustration of an encoder and a corresponding decoder, wherein the encoder is operable to encode input data (D1) to generate corresponding encoded output data (E2), and the decoder is operable to decode the encoded data (E2) to generate corresponding decoded data (D3);

    [0060] FIG. 2 is a flowchart of a method of encoding data pursuant to the present disclosure; and

    [0061] FIG. 3 is a flowchart of a method of decoding data pursuant to the present disclosure

    [0062] In the accompanying diagrams, an underlined number is employed to represent an item over which the underlined number is positioned or an item to which the underlined number is adjacent. When a number is non-underlined and accompanied by an associated arrow, the non-underlined number is used to identify a general item at which the arrow is pointing.

    DESCRIPTION OF EMBODIMENTS OF THE DISCLOSURE

    [0063] In overview, when employing range coding for encoding data (D1), the probabilities of symbols in the data (D1) that are to be coded have to be known, otherwise an achievable compression efficiency of such range coding correspondingly greatly suffers. The probability of each symbol defines a “range” during coding, wherein the larger the probability, the larger the range. When symbols are coded, the corresponding ranges are updated according to the probability of the coded symbol. If the range becomes small enough, a range coder emits, for example, a byte and increases the range. Thus, for more common symbols, their ranges decrease slowly and more symbols can be coded before a byte is emitted.

    [0064] When implementing range coding in an encoder, a frequency table index, a probability table index or a range table index, or frequencies, probabilities or range values for symbols are sent in encoded data (E2) generated by the encoder using some given precision, unless already known, namely a priori, at a corresponding decoder; optionally, the encoder is operable to switch dynamically between using a frequency table index, a probability table index, a range table index, frequency values, probability values and range values for mutually different portions of the data (D1) to be encoded. For example, when eight-bit data is being coded within a range codec, there arise potentially 2.sup.8 symbols, namely 256 symbols. If eight bits, namely one byte, were used to send each frequency, probability or range value, 256 bytes would be required to send all the frequencies, probabilities or range values. In some cases, 256 bytes is potentially larger than the amount of compressed data acquired from the range encoder, therefore there is a clear need to use fewer bits to deliver the frequencies, probabilities or range values; in other words, delivering the frequencies, probabilities or range values from the encoder to the decoder represents a data overhead which is potentially larger than the actual amount of data to be encoded, corresponding to a lower compression ratio performance.

    [0065] Methods of encoding data (D1) pursuant to the present disclosure are distinguished from known methods in that, in addition to the symbol frequencies, probabilities or range values, there is also sent an availability signal, for example one availability bit for each symbol. The value of this availability bit is beneficially “one”, namely “1”, for all the symbols which are represented in the encoded data (E2) and have high enough probability, and “zero”, namely “0”, for all the symbols which are not represented in the encoded data (E2), and ‘zero’ also for all the symbols that are represented in the encoded data (E2) but have a relatively low probability.

    [0066] In methods of encoding data (D1) pursuant to the present disclosure, whether or not a symbol has low enough probability is checked, for example, by comparing the probability of a symbol to a threshold, optionally more than one threshold value. When encoding the symbols, the probability for the symbols which are not present in the encoded data (E2) or which have a probability lower than a threshold is ‘zero’ (an escape code is used and no range is preserved for the symbol) or ‘one’ (namely, low probability symbols delivered with smallest possible range), namely ‘0’ or “1”, is regardless of the size of the whole range used for encoding the input data (D1) 10 provided to the encoder 20 for generating the encoded data (E2) 30; such pertains when the encoder 20 and the one or more decoders 80 employ the improved method (T) and an inverse (T.sup.−1) thereof, respectively. The amount A (in bits) of encoded data required to send the frequencies, probabilities or ranges and the availability signal (for example, availability bits in this example) is then the number N.sub.S of those symbols present, or available, in the encoded data (E2) which have high enough probability times the number N.sub.B of bits used for each frequency, probability or range value plus one availability bit for all symbols O.sub.S; in other words:


    A=N.sub.S*N.sub.B+O.sub.S  Eq. 1

    [0067] The next example of the improved method pursuant to the present disclosure is applied in an encoder 20 to encode a set of data values as input data (D1) 10 to generate corresponding encoded data (E2) 30. In this example, a coded data stream (D1) contains 150 data values that can contain 20 symbols (=values), namely from 0 to 19, but only 8 of those 20 possible data values, namely min=2 and max=19, are actually represented in the current data stream. These min and max values (min=“minimum”, max=“maximum”) are optionally also delivered as described, for example, in an ODelta coding a method disclosed in a patent application GB1303661.1 filed on 1 Mar. 2013 by Gurulogic Microsystems Oy; “ODelta” encoding relates to a delta encoding method with offset and wraparound computations for providing especially efficient encoding of data. This enables a reduction in some bits needed for delivering an availability signal. Moreover, this also reduces the data range of possibly available symbol values when some method to modify entropy, such as for example ODelta coding, is used before range encoding is employed. A best advantage associated with use of the min and max values is achieved when all the methods modifying entropy and range coding use the same information and that information is delivered only once from an encoder to a corresponding decoder. Table 1 below shows the frequencies and probabilities of the symbols, for example. The probability is computed by dividing the frequency by the total number of data values.

    TABLE-US-00001 TABLE 1 Example range encoding pursuant to the present disclosure Value Probability with Probability Probability (Symbol Probability 7 bits with 7 bits with 6 bits in data) Frequency Probability with 7 bits (escaped) (modified) (modified) 2 7 0.047 6 6 6 2 4 2 0.013 2 (0) (1) (1) 7 81 0.54 69  69  63  28  9 1 0.007 1 (0) (1) (1) 12 39 0.26 33  33  30  13  13 9 0.06 8 8 7 3 14 3 0.02 2 2 2 (1) 19 8 0.053 7 7 6 3 Escape 0 0.0 (0) 3 x12 x12 Sum 150 1.000 128  128  114 + 14 = 128 49 + 15 = 64

    [0068] In Table 1, there are a couple of symbols that have a very low probability of occurrence. In an event that 7 bits are used to deliver the probabilities, if the same amount of bits to describe each probability were used, there would be needed 20*7=140 bits to express all the probabilities. If the presence of symbols in the stream, namely in the encoded data (E2) 30, is expressed by sending, for example, one availability bit per each symbol, we would still need 8*7+20*1=76 bits to express all the probabilities.

    [0069] Already this initial embodiment, for implementing the improved method pursuant to the present disclosure, differs from known solutions on account of using separate availability bits to reduce the amount of delivered probabilities from 20 to 8. With regard to other embodiments of the present disclosure described later, it is optionally beneficial to ensure that the threshold that determines whether a given probability is sent to the decoder 80 or not, for example the threshold is optionally set to 0.018 with 7 bits probability. Modifying the threshold changes the amount of bits in the encoded data (E2) 30 needed to express and deliver the probabilities to the one or more decoders 80. If 0.10 is selected as the threshold for the data described by Table 1, only two symbols will be left and then 2*x+20*1 bits are needed for expressing the probabilities in the encoded data (E2) 30, where x refers to the bit count used to express the probability.

    [0070] Finding an optimal threshold for use when implementing the improved method of the disclosure depends upon an amount of encoded data (E2) 30 to be sent from the encoder 20 to the one or more decoders 80, and upon frequencies of symbols represented in the encoded data (E2) 30. A manner in which the one or more aforesaid thresholds are determined will now be elucidated in greater detail. For example, let

    [0071] T=the threshold, and

    [0072] B=the bit count used to express the probability,

    [0073] for example in the Table 1 above, expressible in either 6 or 7 bits. The threshold is beneficially inside given recommended limits, and not smaller than a lower threshold limit T.sub.LOW, as determined by Equation 2 (Eq. 2):

    [00001] T LOW = 1 2 B .Math. .Math. 2 2 B T Recommended 8 2 B Eq . .Math. 2

    [0074] In the last four columns in Table 1, there are shown the actual probabilities that are sent to the one or more decoders 80. In the “Probability with 7 bits” column, there is shown the probability sent if 7 bits are used for all the 8 or 20 data values, with or without an availability signal, wherein the availability signal refers to signal expressing the presence of symbols in the stream. The “Probability with 7 bits (escaped)” corresponds to a probability sent utilizing a first embodiment of the improved method pursuant to the present disclosure, and the “Probability with 7 (or 6) bits (modified)” corresponds to a probability sent utilizing a second embodiment of the improved method pursuant to the present disclosure.

    [0075] The probabilities shown in parenthesis in the last three columns of Table 1, are not actually sent to the one or more decoders 80, as they are expressed by using the zero availability bit. In this example, the probabilities sent to the one or more decoders 80 are close to the probabilities sent with known methods of encoding, thus utilizing the improved method pursuant to the present disclosure does not affect the efficiency of actual range coding significantly, but can improve overall compression efficiency greatly by reducing the number of bits required to be sent for frequencies, probabilities or range values. Moreover, it will be appreciated that the sum of the probabilities sent in a known manner, or an escaped case, is 128, whereas in the improved method according to the second embodiment involves the sum of the probabilities being sent as shown in the table, namely either 114 or 49. This arises on account of reserving the probability value ‘one’ for each data value that was expressed with a zero availability bit, wherein there are 14 or 15 of these data values, wherein 12 data values are not present in the stream, and 2 or 3 values that have lower probability than the threshold.

    [0076] In this example, using 7 bits and a threshold as well, symbols 4 and 9 are expressed with a zero availability bit, together with all the 12 symbols that are not present in the data stream. Originally, there was no range, called escape, reserved for those symbols that are not present in the data stream. Now, there will have to be a mechanism to deliver also those symbols 4 and 9 that do not get their own probability. This can be efficiently done by using two different embodiments described below.

    [0077] The first embodiment, shown in the Table 1 above with “(escaped)”, is where a separate escape symbol and its associated range are created. When the symbol does not have its own range, it is delivered with the escape (range). Additionally, the symbol value is also delivered in its own data stream. The symbol value can be delivered with 5 bits in this example, because the symbol value range is 0 to 19. Optionally, when the ratio of available symbols divided by all possible symbols is high, namely greater than 0.25, the symbol value is beneficially delivered with a slightly smaller amount of bits, by delivering the symbol value with its corresponding availability 0-bit position. For example, in this example case, a symbol value 4 corresponds to an availability 0-bit 3 and a symbol value 9 corresponds to an availability 0-bit 7, in the bit stream, namely “00100001000011100001”. Therefore, there are only 14 availability 0-bits available in the stream and only 4 bits are needed to present them, namely to represent them in the encoded data (E2). The delivery of separate symbol value stream is optionally avoided, namely the probabilities of the range coding are switched from normal probabilities to being equal probabilities of all symbols, or as equal probabilities of all availability 0-bit symbols, as possible after escape (range) symbol delivery for delivering the actual data value, and then probabilities are returned back to the normal probabilities, when the actual symbol value is delivered.

    [0078] The second embodiment defines that all the availability 0-bit symbols will be allocated a probability ‘1’, and a remainder of the range is preserved for the availability 1-bit symbols from the full range of probabilities. Such solutions, shown in the Table 1 with “(modified)”, are also described. Now, there are 12+2 escaped symbols, in the 7 bits example above, and they are allocated 14 values from 128 available values. The remaining 114 values are used for those 6 symbols that are allocated with availability 1-bit. A similar example is also presented using 6 bits for range probabilities in the last column of the Table 1, wherein the threshold value is in this example selected to be 0.4. As aforementioned, this time those availability 0-bit symbols in the bit stream can be understood as being escape symbols, and they all will be allocated their own probability value ‘1’, as shown in the Table 1 with parenthesis.

    [0079] The amount of bits needed for delivering probability values will now be described. The combined (escape) solution uses 7*7+20*1=69 bits. In this example, it is not a preferred solution because it saves only seven (76-69) bits in probability table delivery as compared to the first embodiment pursuant to the present disclosure, but uses 3*4=12 bits for additional escaped symbol values delivery. Thus, the better probability of one or more escaped symbols compared to the original symbols is not enough to compensate for the increase in data size. This time, the probability of other symbols is the same and benefits are not achieved by delivering those symbols either.

    [0080] This improved method is also useful in another way, for example when a lot of symbols are escaped, but their probability is not very high. Sometimes, it is also feasible to use a lower amount of bits as well for escape symbols than for original symbols, because the smallest probabilities are delivered in any case with a combined escape code. The second embodiment with modified probabilities uses 6*7+20*1=62 bits (with 7-bit) or 5*6+20*1=50 bits (with 6 bits). The delivery of probabilities is optionally even better optimized by knowing or delivering information denoting the probability of the most frequent symbol represented in the encoded data (E2) 30.

    [0081] Now, when the highest probability value is below 64, and below 32, probabilities are optionally delivered with 6 bits (and 5 bits) in these examples, so the total probability table delivery requires only 6*6+20*1=56 bits (with 7 bits example), and 5*5+20*1=45 bits (with 6 bits example). Moreover, the delivery of this 20*1 availability bit stream is optionally compressed; in addition to compressing the availability bits, it is also feasible to implement embodiments of the present disclosure by compressing frequency tables or probability values; such compression is optionally implemented via use of one or more compression methods. This is the case especially when there are lot of possible symbols available and there are different availability 0-bit and availability 1-bit probabilities, namely lots of 0's or lots of 1's, or they are located in different parts of the bit stream in the encoded data (E2) 30. Optionally, when the range of available symbols is limited separately, for example by delivering min and/or max values, the first and/or the last symbols are known to be available in the stream and those are not needed to be communicated via use of an availability signal, for example availability bits for it or them are not needed to be delivered. There is only a need to deliver availability signal, for example availability bits, for the range from min+1 to max−1. In this Table 1 example, the saving is 31 (76−45) bits compared to the case where the symbol presence was expressed, namely the first improved method. The saving is 95 (140−45) bits compared to known methods. Such savings are not lost with less accurate probabilities of symbols and so these improved methods are clearly advantageous methods to deliver the data in this example.

    [0082] Optionally, probability information is delivered in the encoded data (E2) 30 with even less accurate probability values, or by using a higher threshold value and thus achieving even more data size savings in the probability table delivery via the encoded data (E2) 30. The savings in probability table delivery results typically also in some loss in entropy coding. Such loss has to be taken into account when selecting a best possible table delivery method when implementing embodiments of the present disclosure.

    [0083] The improved methods of the disclosure are also optionally used for original data in some cases, to save on data size, for example when storing in databases, on data carriers and similar. It will be appreciated that, in examples provided in the foregoing, the original data contains only 150 symbols and 8 different values and so the original 150*5=750 bits information can be delivered also with 150*3+20*1=470 bits by using the availability bit information directly for the original data. Range coding with table delivery and entropy coding is capable of achieving a smaller data size than the original data. It will be appreciated that different methods that modify entropy of the data can be used before the range coding. Similarly, their inverse operations then need to be done after the range decoding. Such methods that modify entropy include, for example, Delta coding, ODelta coding, namely a method disclosed in a patent application GB1303661.1 filed on 1 Mar. 2013 by Gurulogic Microsystems Oy (hereby incorporated by reference, wherein ODelta encoding employs a combination of Delta coding, an offset computation and a wraparound computation), entropy modifier (EM), a method disclosed in patent application GB1303658.7, filed on 1 Mar. 2013 by Gurulogic Microsystems Oy (hereby incorporated in reference), run length encoding (RLE), and split run length encoding (SRLE), a method disclosed in patent application GB1303660.3, filed on 1 Mar. 2013 by Gurulogic Microsystems Oy (hereby incorporated by reference).

    [0084] As described earlier, improved methods pursuant to the present disclosure beneficially optionally do not utilize one or more <EOM> symbols when implementing range coding, because of an amount of data to be encoded (=amount of data to be decoded) or an amount of encoded data (that will need to be decoded) can be delivered instead. Based on that amount of data to be encoded or amount of encoded data that are present in the encoded data (E2) 30 after range encoding can be used when the data (D3) 90 is decoded with range decoding. Moreover, pursuant to the present disclosure, there is no need for delivering an additional <EOM> symbol after data during range coding for generating the encoded data (E2) 30.

    [0085] Optionally, when the probability values are delivered, for example via the encoded data (E2) 30 but not limited thereto, there is no need to deliver the last probability value when the sum of probability values is known, for example preset, or has already been delivered to the one or more decoders 80. The last probability value for symbol, escape, <EOM> or true symbol present in data, are optionally calculated by subtracting from the probability sum all the previously delivered values. In any case, the sum needs to be known, so that the decoding of probability values can be executed properly in the one or more decoders 80. Some bits can thus optionally be saved form the data size in advance by not delivering the last probability value.

    [0086] Although examples of the present disclosure are provided in respect of range coding, they are also susceptible to being employed mutatis mutandis for arithmetic coding and binary arithmetic coding implemented in the encoder 20. When such arithmetic coding and binary arithmetic coding are implemented in the encoder 20, the escape code is not used in the actual coding process, but instead for determining a manner in which to transmit the probability range for similar future items. However, such a method is less efficient than aforementioned improved methods of the present disclosure, which use an availability signal and a probability value to convey that a given symbol exists, and an indication of an associated probability of the given symbol; reference is herewith made to known “Compression ratio is generally lower, than in static <http://compressions.sourceforge.net/Arithmetic.html#static> coding. Although for short input sequences benefit of not sending statistics data can be more significant”. Thus, improved methods of the present disclosure represent a considerable technical advance in data encoding technology.

    [0087] The improved methods of encoding pursuant to the present disclosure are susceptible to being used in data handling and data generating devices, for example in personal computers, portable wireless enabled computers, phablet computers, tablet computers, smart telephones, mobile telephones (“cell phones”), audio-visual apparatus, digital cameras, video cameras, scientific instruments, gene sequencing apparatus, televisions, surveillance apparatus, but not limited thereto. The improved methods are optionally implemented in digital hardware, for example Application Specific Integrated Circuits (ASICs). Alternatively, or additionally, the improved methods are susceptible to being implemented using one or more software products recorded on non-transitory (non-transient) machine-readable data storage media, wherein the software products are executable upon computing hardware. Optionally, the one or more software products are downloadable via a communication network as “software apps”, for example to wireless-enabled portable communication devices, for example mobile telephones. The encoder 20 and the corresponding decoder 80 are susceptible to being implemented as a codec 95, for example for use in portable signal capture apparatus, for example digital cameras, Internet-enabled multimedia apparatus, games-playing apparatus, surveillance cameras, environmental monitoring apparatus and such like, but not limited thereto.

    [0088] Referring next to FIG. 2, there are shown steps of a method encoding the data (D1) 10 in the encoder 20 to generate the corresponding encoded data (E2) 30. The steps are optionally performed in sequence as illustrated, although certain of the steps are optional, and their order of execution may be varied.

    TABLE-US-00002 TABLE 2 Steps of a method of encoding data Step Operation Detail 100 Receive the data (D1) 10 and analyze its data Non- characteristics to determine information describing optional probabilities of symbols occurring therein 11 Determine whether or not the data (D1) 10 is beneficially Optional subdivided into a plurality of parts, wherein each part is encoded separately with associated probability of oscurrance of symbols therein 120 Generate data indicative of whether of not a given symbol Non- is represented in the encoded data (E2) 30 by way of the optional information describing probabilities of symbols occurring therein with an availability signal, for example expressed as single availability bit information, for example as “1” or “0” or coding method, or number of indexes and their values. 130 Applying optionally one or more threshold limits to Optional determine whether or not probability information is sent regarding one or more symbols present in the data (D1) 10 140 Encoding symbols of the data (D1) 10, together with Non- information describing probabilities of symbols occurring optional therein from the step 100, and also the indicative data of the step 120, to generate the encoded data (E2) 30

    [0089] In the one or more decoders 80, a reverse of Table 2 is substantially performed, namely the frequency, probability or range information is extracted from the encoded data (E2) 30 derived from the step 100, and the data from the step 120 is employed to determine which symbols encoded in the encoded data (E2) 30 are to subject to decoding using the frequency, probability or range information and which other symbols are not to be decoded in such a manner, wherein results of such computations are assembled together to provide the decoded data (D3) 90. Optionally, the one or more decoders 80 are operable to perform transcoding, such that the data D1 and the data D3 are mutually different. Such transcoding is, for example, advantageous when the one or more decoders 80 are mutually different, and the data D3 is to be rendered on mutually different presentation apparatus which require transcoding to be customized for such presentation apparatus, for example pixel display resolution and display aspect ratio.

    [0090] Referring next to FIG. 3, there are shown steps 200 to 240 of a method of decoding the encoded data (E2) 30 to generate the decoded data (D3) 90; optionally, the decoded data (D3) 90 is a regenerated version of the data (D1) 10, but not limited thereto. In operation, in the step 200, the decoder 80 receives an availability signal, namely the availability bits, or the coding method, or the amount of the indices and the indices themselves. Moreover, in the step 210, the decoder 80 receives the transmitted frequencies, the probabilities or the range tables in the data number 60, (which is included in the data E2, 30), of which the decoder 80 constructs a complete frequency table, a probability table or a range table. The “0” bit slot is beneficially set to the value of “0”, or “1”, if so desired, and the “1” bit slot will be set to the value of the received frequency, probability or range. If a frequency table is received, it is converted into a probability table, so that it can be used in range coding. It will be appreciated that also the encoder 20 always needs to convert a frequency table into a probability table before encoding can be efficiently executed by utilizing range coding. After the construction of the probability table in the decoder 80, of which the combined sum of values is a power of two, in the steps 220 to 240, it is then possible to range decode the received transformed data 50 (which is included in the data E2, 30), and thus produce the decoded output data (D3) 90. The steps 200 to 240 correspond substantially to an inverse of the steps 100 to 140 in FIG. 2.

    [0091] The encoder 20 and the decoder 80 are susceptible to being employed in a wide range of data handling apparatus, for example wireless communication devices, audio apparatus, audio-visual apparatus, computing apparatus, video conferencing apparatus, surveillance apparatus, scientific measuring apparatus, genetic sequencing apparatus, genetic sequence analysis apparatus, communication system hardware and/or software, communication network hardware and/or software, but not limited thereto.

    [0092] Modifications to embodiments of the invention described in the foregoing are possible without departing from the scope of the invention as defined by the accompanying claims. Expressions such as “including”, “comprising”, “incorporating”, “consisting of”, “have”, “is” used to describe and claim the present invention are intended to be construed in a non-exclusive manner, namely allowing for items, components or elements not explicitly described also to be present. Reference to the singular is also to be construed to relate to the plural. Numerals included within parentheses in the accompanying claims are intended to assist understanding of the claims and should not be construed in any way to limit subject matter claimed by these claims.