Method, device, and computer program product for reversible data compression and decompression

The method optimizes reversible data compression for small data sets by preprocessing and Rice encoding with adaptive k-parameters, addressing inefficiencies in existing algorithms and reducing latency in wireless audio devices.

JP7712214B2Active Publication Date: 2025-07-23オウディオド アーベー(パブル)
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2021568697
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-05-24
Filing Date
2020-05-22
Publication Date
2025-07-23
Estimated Expiration
2040-05-22

AI Technical Summary

Technical Problem

Existing reversible compression algorithms have insufficient compression ratios for small data sets, particularly in scenarios like updating personalized hearing profiles in wireless audio devices, leading to undesirable latency and inefficiency.

Method used

A method involving preprocessing to generate differential data, dividing into blocks, and encoding using Rice encoding with adaptive k-parameters, along with delta encoding iterations, to optimize compression for small data sets.

Benefits of technology

Achieves efficient compression of small data sets with reduced latency and power consumption, maintaining data integrity and improving user experience in portable electronic devices.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007712214000001
    Figure 0007712214000001
  • Figure 0007712214000002
    Figure 0007712214000002
  • Figure 0007712214000003
    Figure 0007712214000003
Patent Text Reader

Abstract

A lossless data compression method (1800) is provided, comprising receiving a sequence of data segments (210) of known length and known characteristics, and preprocessing (1810) the sequence of data segments to generate a sequence of difference data including a starting value, one or more difference values, and a ending difference value. The method further comprises dividing (1820) the sequence of difference data into at least two blocks of difference data, and encoding (1830) at least one block of difference data using Rice coding to thereby provide at least one block of encoded difference data. The method further comprises generating (1840) a data packet (220) including the at least one block of encoded difference data and any blocks of unencoded difference data. Lossless data decompression methods are also provided.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention generally relates to data compression, and more particularly to reversible data compression of a series of data having known characteristics.

Background Art

[0002] In modern society where connected devices are becoming increasingly common, there is a growing need for high-speed and reliable communication. A great deal of time and money has been spent on improving the overall throughput of data in wired or wireless devices and shortening the latency of communication between such devices. As a result, users of communication services learn to expect faster response times and immediate responses to actions. This is expected in all use cases, for example, from conversations on mobile phones to turning on kitchen lighting using smart home solutions.

[0003] A particular area where predicted speed and response time become issues is when a low-speed control channel is used to control a high-speed data channel. This becomes apparent when a portable electronic audio or video device switches between different usage modes or when a software filter within the device is updated. As an example, a wireless Bluetooth® audio headset may be updated with a personalized hearing profile. The user streams audio and seamlessly switches with or without using the hearing profile or between different versions of the personalized hearing profile. Since the hearing profile is transmitted to the audio headset using a control channel, the transfer is slow, resulting in an undesirable latency for the user, which can be several seconds in some cases.

[0004] Typically, in cases such as the examples detailed above, a compression algorithm can be utilized to reduce the amount of data to be transmitted. The problem associated with compression algorithms is that they typically cause data loss, which is unacceptable, for example, in a hearing profile. Reversible compression algorithms typically have poor performance, i.e., a compression ratio of less than 25%. This is caused by the fact that when compressing a data set smaller than 150 bytes, such as the hearing profile described above, the overhead, i.e., the metadata, is too large in part.

[0005] One attempt to solve the above drawbacks is detailed in Patent Document 1, where a list of integer values is generated from the n-grams of user input. The list of integer values is sorted. The differences between adjacent integer values in the list are calculated. Each calculated difference is encoded using a Golomb code. Access to the Golomb compression language model is used to identify possible matches.

Prior Art Documents

Patent Documents

[0006]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0007] One problem associated with the prior art is that the compression ratio is still insufficient when applied to small data sets.

[0008] The object of the present invention is to provide a new type of reversible data compression that is improved over the prior art and eliminates or at least reduces the above-mentioned drawbacks. More specifically, the object of the present invention is to provide a reversible data compression method that is also efficient for small data sets. One or more of these objects are achieved by the techniques described in the appended independent claims, and the preferred embodiments are defined in the dependent claims related thereto.

Means for Solving the Problems

[0009] According to a first aspect, a reversible data compression method is provided. The method includes receiving a series of data segments of a known length and known characteristics, and preprocessing the series of data segments to generate a series of differential data including an initial value, one or more difference values, and a final difference value. The method further includes dividing the series of differential data into at least two blocks of differential data, and encoding at least one block of the differential data using Rice encoding, thereby providing at least one block of the encoded differential data. The method also includes generating a data packet including the at least one block of the encoded differential data and any block of the unencoded differential data.

[0010] In one embodiment of the reversible data compression method, in the generating step, the data packet further comprises one or more k parameters. Each k parameter is associated with a block of the encoded differential data. Including the k parameter in the data packet is beneficial because any k parameter can be used in the encoding. This is because in this embodiment, the k parameter does not need to be known in advance or recreated during decoding, for example.

[0011] In a further embodiment of the reversible data compression method, the encoding step further includes the step of Rice encoding at least one block of the differential data with an associated k-parameter. The k-parameter is determined by calculating the average number of bits of the difference values of the associated block of differential data. Using the average number of bits as the k-parameter is a very efficient way to quickly find the optimal or near-optimal k-parameter for a block of differential data.

[0012] In another embodiment of the reversible data compression method, in the preprocessing step, a series of differential data is generated by one or more repetitions of a series of data segments. This is beneficial because it reduces the variance and mean of the data, thereby enabling more efficient encoding.

[0013] In a further embodiment of the reversible data compression method, in the generating step, a data packet further comprises a delta encoding iteration indicator indicating the number of times each of the difference values has been delta encoded. By including the delta encoding iteration indicator in the data packet, the number of iterations can be freely selected. This is because the decoding is provided within the data packet, so there is no need to know the number of iterations in advance.

[0014] In a further embodiment of the reversible data compression method, delta encoding is repeated until the sum of the absolute values of the difference values is minimized or falls below a predefined average threshold or a configurable average threshold. By repeatedly performing delta encoding until the sum of the absolute values is minimized or below the threshold, the series of differential data becomes optimal or near-optimal from the perspective of encoding. This can be done without the need to perform calculations that consume memory and resources such as variance or standard deviation.

[0015] In yet another embodiment of the reversible data compression method, in the splitting step, one block of the differential data contains only the last differential value, and the differential value and the first value are included in at least one other block of the differential data. By treating the last value differently, more efficient encoding becomes possible. This is because the last value typically has a different magnitude from other values. When there is a difference in magnitude, it affects the k parameter and reduces the encoding efficiency.

[0016] In one embodiment of the reversible data compression method, the encoding step includes not encoding the block of differential data that contains the last differential value. This is beneficial because the last difference has a different magnitude compared to other differences. This means that the k parameter of the block containing the last value is greatly affected by the last value, reducing the encoding efficiency. This is particularly beneficial when the last differential value is the only value within one block of the differential data. The reason is that encoding a single differential data element requires more overhead than the reduction of the data element by data encoding, resulting in a lower compression ratio.

[0017] In another embodiment of the reversible data compression method, the characteristics of the series of data segments are those of a digital FIR audio filter. Having a series of data segments that describe a digital FIR audio filter is particularly beneficial because these filters have certain known characteristics that enable particularly efficient compression.

[0018] According to a second aspect, there is provided a reversible data decompression method for decompressing data packets generated by a reversible data compression method. The reversible data decompression method includes the steps of extracting a block of data from a data packet, wherein at least one block of data is a block of encoded differential data; and decoding at least one block of encoded differential data to provide one or more blocks of differential data. The method also includes the steps of adding one or more blocks of differential data to a sequence of differential data including an initial value, a sequence of differential values, and a last differential value; and post-processing the sequence of differential data based on the initial value to generate a sequence of data segments.

[0019] In one embodiment of the reversible data decompression method, the data packet further includes one or more k-parameters. Each k-parameter is associated with a block of encoded differential data. The step of extraction includes extracting the one or more k-parameters from the data packet, and the step of decoding further includes decoding the block of encoded differential data using those associated k-parameters. Including k-parameters in the data packet is beneficial because any k-parameters can be used in encoding. This is because in this aspect, the k-parameters do not need to be known in advance or recreated during decoding, for example.

[0020] In another embodiment of the reversible data decompression method, the sequence of differential data included in the data packet is generated by delta encoding the sequence of data segments one or more times. Further, the step of post-processing includes delta decoding the sequence of differential data one or more times. This is beneficial because it reduces the variance and mean of the data, resulting in more efficient encoding.

[0021] In a further embodiment of the reversible data decompression method, the data packet includes a delta coding iteration indicator indicating the number of times each of the difference values in the data packet has been delta coded. In addition to this, the extracting step includes extracting the delta coding iteration indicator from the data packet, and the post-processing step is executed the same number of times as indicated by the delta coding iteration indicator. By including the delta coding iteration indicator in the data packet, the number of iterations can be freely selected. This is because since the decoding is provided within the data packet, there is no need to know the number of iterations in advance.

[0022] In yet another embodiment of the reversible data decompression method, one block of the difference data included in the data packet includes only the last difference value, and the difference value is included in at least one other block of the difference data of the data packet. Also, the extracting step includes extracting one block of data including the last difference value and at least one other block of data including one or more difference values and the first value. By treating the last value differently, more efficient coding becomes possible. This is because the last value typically has a different size from other values. Having a difference in size affects the k parameter and reduces the coding efficiency.

[0023] In yet another embodiment of the reversible data decompression method, the block of difference data including the last difference value included in the data packet is not coded. In addition to this, the decoding step is not applied to the block of data including the last difference value. This is beneficial because the last difference value has a different size compared to other difference values. This means that the k parameter of the block including the last value is greatly affected by the last value and the coding efficiency decreases. This is particularly beneficial when the last difference value is the only value within one block of the difference data. The reason is that when encoding a single difference data element, more overhead is required than the reduction of the data element by the data coding, resulting in a decrease in the compression ratio.

[0024] According to a third aspect, a portable electronic device is provided that includes a controller, a memory, and a communication interface. The controller is configured to obtain an audio profile adapted to a user from the memory and generate data packets by subjecting the audio profile to the reversible data compression method of the first aspect. The controller is further configured to transmit the data packets to a second portable electronic device via the interface.

[0025] According to a fourth aspect, a portable electronic device is provided that includes a controller, a memory, and a communication interface. The controller is configured to receive data packets via the communication interface and generate a series of data segments by subjecting the data packets to the reversible data decompression method of the second aspect. The controller is further configured to store the series of data segments in the memory as an audio profile.

[0026] According to a fifth aspect, a computer program product is provided. The computer program product is configured to execute the reversible data compression method of the first aspect when executed by a controller.

[0027] According to a sixth aspect, a computer program product is provided. The computer program product is configured to execute the reversible data decompression method of the second aspect when executed by a controller.

Brief Description of the Drawings

[0028] Embodiments of the present invention will be described below, with reference to the accompanying schematic diagrams that show non-limiting examples of how the concepts of the present invention can be implemented.

[0029]

Figure 1

Figure 2a

Figure 2b

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Figure 21

Figure 22

Figure 23

Figure 24

Figure 25

[0030] However, the present invention may be embodied in many different forms and should not be construed as limited to the embodiments described herein. Rather, these embodiments are provided by way of example so that this disclosure will be thorough and complete and will fully convey the scope of the invention to those skilled in the art as defined by the appended claims.

[0031] Words and terms such as size and length should be mentioned as being used throughout this disclosure. These terms are clear from their context. For example, the size of a series may be the number of elements in the series and / or the total number of binary bits representing the series. The length of a series may sometimes mean the same as the size of the series. Those skilled in the art will have no difficulty understanding the difference between size and length, if any, or how the teachings of this disclosure should be applied.

[0032] The disclosed invention generally relates to data compression, and more particularly to reversible data compression of a small amount of data. As a non-limiting example for presenting one application of the present invention, consider a portable electronic device 120 depicted as a headset in FIG. 1 and a portable electronic device 110 depicted as a mobile phone in FIG. 1. The headset 120 and the mobile phone 110 communicate with each other via an interface 130 which may be a Bluetooth interface, although any suitable interface can be utilized. The mobile phone 110 is provided with a control application that connects to and controls at least a part of the firmware of the headset 120 via the interface 130. The control application may be configured to update the configuration regarding the tone adjustment of the headset 120 while audio is being transferred from the mobile phone 110 to the headset 120 via the interface 130. Typically, when the interface 130 is, for example, Bluetooth, the audio data is streamed on the streaming channel of the interface 130 and the configuration is transferred on the data channel of the interface 130. This is a typical setting in many communication interfaces. The channel or bandwidth used to control the slave device and perform the update is reduced compared to other interfaces used for streaming data to the device. This makes sense since control commands are typically very short, often a single byte, and thus very short. For example, it is rare to upgrade the firmware of the slave device and update the configuration, and typically it is executed when the slave device is in the standby state or executed in the background without affecting the use of the device. That is, if the transferred configuration is small, for example, less than 150 bytes of data, the channel used for this may become slow and the transfer may take more than 3 seconds. If the transferred configuration is the hearing profile of the user of the headset 120 and the transfer is initiated by the user on the mobile phone 130, the 3-second waiting time is substantial.When switching between different configurations, the user expects near-instantaneous feedback in order to directly evaluate the impact on audio playback. The reverse scenario is also possible; for example, an audio profile is transferred from the headset 120 to the mobile phone 110. When the data rate of the interface 130 is fixed, a straightforward approach is to use a standard reversible compression method such as Rice encoding of the data. In the above non-limiting example with a configuration having a hearing profile of less than 150 bytes, the data is compressed to approximately 85%, which still requires a transfer time of over 2.5 seconds when switching configurations. Such a low compression ratio provides no incentive to invest in the computational power required to compress and decompress the data packets. The additional computational steps would consume power and, for example, reduce the standby time of the portable electronic device. By reducing the size of the data, the transfer time of the data is shortened, and as a result, the power consumption is reduced. This reduction must be related to the computational cost of compression and decompression and the additional power consumption. By utilizing the teachings of the present disclosure, the data is compressed to an average of 46% of its original size. In the above example, when the sampling rate of the hearing profile is doubled, the correlation between samples increases, and those skilled in the art will understand, after reading the present disclosure, that the compression ratio will be even higher in such embodiments.

[0033] The data to be compressed, e.g., the configuration or audio profile in the above example, is referred to as a series 210 of data segments and is shown in FIG. 2a. The series 210 of data segments includes n data segments 230. In some embodiments of the present disclosure, the data segments 230 each contain 16-bit data. In some embodiments of the present disclosure, the number n of data segments 230 is 32. However, the methods, modules, and devices disclosed herein operate on data or series of data segments of any size or length, and it should be emphasized that one of the advantages is that the overhead or metadata required by the teachings herein is limited. The longer the data series, the better the compression ratio, i.e., the present invention functions better even with larger data series. The series 210 of data segments is converted into data packets 220 and, referring to FIG. 2b, is, for example, transferred, stored, or transmitted, and as a result, received or retrieved and converted back into the original series 210 of data segments. The data packets 220 include m output data segments 240. At least one of the output data segments 240 is encoded. The output data segments 240 can be any type of data represented in a digital format, and the disclosed methods and systems of the present invention are applicable to all of them.

[0034] To achieve lossless compression of a small set of data, the inventors behind the present disclosure have skillfully combined a series of functions / modules detailed in the following sections.

[0035] FIG. 3 shows a data encoding system 300. The data encoding system 300 includes a preprocessing module 310, a splitting module 320, an encoding module 330, and a generating module 340. The data encoding system 300 receives a series 210 of data segments and outputs data packets 220.

[0036] The corresponding system for decrypting data packet 220 is shown as data decryption system 400 in FIG. 4. Data decryption system 400 includes an extraction module 440, a decryption module 430, an addition module 420, and a post-processing module 410. Data decryption system 400 receives data packet 220 and outputs a series of data segments 210.

[0037] Each of modules 310, 320, 330, 340, 440, 430, 420, 410 may be implemented as a computer-implemented method using, for example, hardware components, a combination of hardware and software, or any other suitable means. The specific functions of each of modules 310, 320, 330, 340, 440, 430, 420, 410 will be described in more detail in the following sections.

[0038] (Preprocessing and Postprocessing) The preprocessing module 310 has the task of preparing the series of data segments 210 received as input to the data encoding system 300 for further processing. Similarly, the post-processing module 410 receives the series of data provided by the addition module 420, processes the series of data, and provides as output the same series of data segments 210 as received as input by the preprocessing module 310. In short, this process is reversible in that there is no difference between the series of data segments 210 output by the data decryption system 400 and the series of data segments 210 received as input by the data encoding system 300.

[0039] Each data segment 230 of the series of data segments 210 is several binary bits. The number of bits nb in each data segment 230 is set to 2 nb -1 as the maximum number representable by data segment 230. For illustrative purposes only, 8 bits (2 8Consider a series 210 of data segments having a data segment 230 with a value of -1 = 255. However, the highest number represented by the series 210 of data segments is 127. That is, all numbers in the series are equal to 0 or 127, or in between. In this example, assuming it is known that 7 bits are used for the data, the data segment 230 can be reduced to 7 bits (2 7 -1 = 127) without losing any data. Similarly, if the smallest number represented by a series of data segments is 128, that is, all numbers in the series are equal to 128 or 255, or in between, this number can be subtracted from each of the data segments 230 of the series 210 of data segments, resulting in a series 510 of difference data. After the subtraction, all numbers in the series are equal to 0 or 127, or in between. One effect of this is that in this example, the data segment 230 can be reduced to 7 bits (2 7 -1 = 127) without losing any information, assuming the subtracted number (128) is known.

[0040] The latter example given above can be seen as one method of delta-encoded data, where in the above example the constant 128 is used to calculate the difference or delta.

[0041] FIG. 5 shows an embodiment of the preprocessing module 310. The preprocessing module 310 receives a series 210 of data segments and generates a series 510 of difference data that includes an initial value 520, a final difference value 540, and one or more difference values 530. The difference values 530 are typically calculated as the difference between a corresponding data segment 230 and another data segment 230. The other data segment 230 is typically a data segment 230 adjacent to the data segment 230 corresponding to the difference value of the series 210 of data segments. Referring to FIG. 5, the second difference value 530 is calculated as the difference between the initial values 520, which may be the value 1 in the series 210 of data segments or the second data segment 230 in the series 210 of data segments. Similarly, the fifth difference value 530 is calculated in FIG. 5 as the difference between the fifth input data segment 230 and the fourth input data segment 230. This process continues until the final difference value 540 is calculated, which is the difference between the last data segment 230 and the second-to-last data segment 230.

[0042] The delta encoding described with reference to FIG. 5 is merely an example of how delta encoding can be performed. The term first value does not necessarily mean the first value within a series of values, but can very well refer to any value within the series of values. The first value 520 is the starting value used as a reference when calculating the difference value 530. The first value 520 may be the last value of the series 210 of data segments, and in some embodiments, this may be particularly beneficial. Similarly, the last difference value 540 may not be based on the difference between the last values of the series 210 of data segments, but may be based on any data segment 230. The last difference value 540 simply indicates the last of the difference values 530, 540 within the series 510 of difference data. It will be appreciated that it may be beneficial to process the last difference value 540, or the first value 520, differently from the other difference values 530. This is particularly true when the series 210 of data segments has characteristics. Here, the data segment 230 at the end or beginning of the series 210 of data segments typically has a smaller absolute value compared to the data segment 230 at the opposite end of the series 210 of data segments. This is to reduce the number of bits representing the first value 520 and / or the last difference value 540 within the series 510 of difference data. Note that the first value is not a calculated delta value. Similarly, the central data segment 230 may be used as the first value 520 when the series 210 of data segments has characteristics. Here, the central data segment 230 is typically smaller than the other data segments 230 of the series 210 of data segments. Those skilled in the art will understand how to select the optimal first value 520 according to the characteristics of the series 210 of data segments after fully digesting the teachings of the present disclosure.

[0043] Referring to FIG. 6, an example is shown of how a series 510 of difference data looks based on a series 210 of data segments provided as input to the preprocessing module 310. The leftmost data segment 230 of the series 210 of data segments is used as the first value 520 of the series 510 of difference data. The first value 520 is subtracted from the second data segment to generate a second difference value, which in FIG. 6 is 45 - 35 = 10. Of course, the subtraction may be performed by subtracting the second data segment from the first value 520 that generates a positive difference value in the example of FIG. 6. The third difference value is generated by subtracting the second data segment from the third data segment, which in FIG. 6 is 40 - 45 = -5. The same subtraction is repeated for all data segments 230 of the series 210 of data segments. The series 210 of data segments shown in FIG. 6 includes the same numbers as those used in the following embodiments that further illustrate delta coding. These numbers are random and are not necessarily suitable for all embodiments of the preprocessing module 310. These numbers are merely presented for illustrative purposes to explain the method using examples.

[0044] FIG. 7 shows an embodiment of the preprocessing module 310. In this embodiment, delta coding is repeated multiple times. The output from the first delta coding cycle is used as the input to the second delta coding cycle, and so on. This setting may further reduce the variance, maximum absolute difference value, sum of absolute difference values, number of unique difference values, and / or average of the difference values. It should be noted that multiple repetitions, iterations, cycles, and multiple times in the context of delta coding mean the same thing, i.e., the number of times the series 510 of difference data or a part of the series 510 of difference data has undergone delta coding.

[0045] In a further embodiment, the first value 520 from the first delta encoding cycle is the same as the first value 520 used in the second delta encoding cycle. Basically, the same delta encoding module is repeated multiple times, using the series 210 of data segments as the first input and then the generated series 510 of difference data as the input for the second iteration. This means that the result of each delta encoding cycle is the same number of difference values. This is illustrated in FIG. 8 where two delta encoding cycles are shown.

[0046] In another further embodiment illustrated in FIG. 9, each cycle uses a different first value, and the value used as the first value in a previous iteration is ignored in successive delta encoding iterations. In FIG. 9, it can be seen that the first difference value in the first iteration of delta encoding, i.e., 10, is used as the first value in the second delta encoding iteration. The first difference value output from the second iteration, i.e., -15, is the first difference value of the first iteration, i.e., -5 - 10 = -15, subtracted from the first value of the second iteration, i.e., the second difference value of the first iteration.

[0047] The examples given with reference to FIGS. 8 and 9 both illustrate two iterations, but this is only for the sake of an efficient disclosure. In the embodiment related to FIG. 8, the number of delta encoding cycles may be infinite, and in the embodiment related to FIG. 9, there may be the same number of delta encoding cycles as there are data segments 230 in the series 210 of data segments. It should also be mentioned that the described embodiments can be combined, and one of the embodiments can be executed for a first number of iterations and another embodiment can be executed for a second number of iterations.

[0048] The inventors behind the present disclosure are well aware that there are several different ways to determine the number of delta encoding iterations that the preprocessing module 310 should perform.

[0049] In one embodiment of the preprocessing module 310, the number of delta encoding iterations is a predefined number of iterations. In a further embodiment, the number of times the series 210 of data segments is delta encoded is from 2 to 10 times, and in another embodiment, the number of times the series 210 of data segments is delta encoded is from 3 to 7 times. In a further embodiment that is particularly beneficial in the case of a delta encoded audio profile, the predefined number of times the series 210 of data segments is delta encoded is 4 or 5 times. These numbers of times have been shown experimentally by the inventors to be very beneficial when subjecting an audio profile for a headset to the teachings of this disclosure.

[0050] In one embodiment of the preprocessing module 310, the number of delta encoding iterations is an adaptive number of iterations.

[0051] In a further embodiment, the preprocessing module 310 repeats the delta encoding until the number of unique difference values 230 is minimized. One way to do this is to count the number of unique difference values 230 in each iteration. When the number of unique difference values 230 increases compared to the previous iteration, the preprocessing is stopped, and the series 510 of differential data provided as the output from the preprocessing module is the series 510 of differential data generated from the previous iteration. Alternatively, the preprocessing module 310 repeats the delta encoding until the number of unique difference values 230 is below a predefined value or a configurable threshold value of unique values.

[0052] In another embodiment, the preprocessing module 310 repeats the delta encoding until the sum of the absolute values of the difference values is minimized. One way to do this is to sum the absolute values of the difference values 230 in each iteration. When the sum of the absolute values of the difference values becomes larger compared to the previous iteration, the preprocessing is stopped, and the series 510 of difference data provided as the output from the preprocessing module is the series 510 of difference data generated from the previous iteration. Alternatively, the preprocessing module 310 repeats the delta encoding until the sum of the absolute values of the difference values falls below a predefined or configurable absolute value threshold. Looking at the sum of the difference values when determining the number of times the delta encoding should be cycled is very beneficial when the resources available for performing the delta encoding are limited, such as in a cellular phone, headset, or other portable electronic device having limited processing power, memory, battery, etc.

[0053] In yet another embodiment, each delta encoding iteration performed by the preprocessing module targets all modules 320, 330, 340 of the data encoding system 300 unit where the size of the data packet 220 is minimized. As in the previous embodiments, this can be achieved by calculating the size of each data packet generated from each iteration of the delta encoding of the series 210 of data segments. When the size of the data packet 220 becomes larger compared to the size of the data packet from the previous delta encoding iteration, the preprocessing is stopped, and the series 510 of difference data provided as the output from the preprocessing module 310 is the series 510 of difference data generated from the previous iteration. Of course, since all modules 320, 330, 340 have been executed, the data packet 220 from the previous delta encoding iteration can be provided as the output from the data encoding system 300. Alternatively, the preprocessing module 310 repeats the delta encoding until the size of the data packet 220 falls below a predefined or configurable data packet size threshold.

[0054] One skilled in the art will understand that the embodiments of the preprocessing module 310 listed above can be very well combined in a combined embodiment. In such an embodiment, the sum of the weights for the performance of each embodiment for each iteration can be generated for each iteration. The preprocessing module 310 can continue to repeat the delta encoding cycle, for example, until the sum of the weights is minimized. As described above, this can be implemented by stopping the iteration when the current sum of the weights is greater than the previous sum of the weights and the series 510 of differential data provided as the output from the preprocessing module 310 is the series 510 of differential data generated from the previous iteration. Alternatively, the preprocessing module 310 repeats the delta encoding until the sum of the weights is below a predefined or configurable data packet size threshold.

[0055] The above embodiments can be executed, if applicable, until the stopping criteria described in connection with each embodiment are met, or for a maximum number of times. The maximum number of times can be a configurable maximum number of times or a predefined maximum number of times. When the preprocessing is executed the maximum number of times, the series 510 of differential data provided as the output from the preprocessing module 310 may be the series 510 of differential data generated from the iteration, and as a result, obtain the best value used for the stopping criteria of that particular embodiment. In a further embodiment, the maximum number of times is 6.

[0056] Similarly and / or furthermore, in some embodiments, a minimum number of iterations can be specified, i.e., the stopping criteria can be ignored for the minimum number of iterations before any evaluation of the results is performed.

[0057] The embodiments can further be executed for a fixed number of iterations, if applicable, and the series 510 of differential data provided as the output from the preprocessing module 310 can be the series 510 of differential data generated from the last iteration of the fixed number of iterations. The fixed number of iterations can be a configurable or predefined fixed number of iterations.

[0058] Referring to FIG. 10, an embodiment of the post-processing module 410 will be described. The post-processing module 410 performs operations very similar to those of the pre-processing module 310, but in reverse. The post-processing module 410 receives a series 510 of differential data including an initial value 520 and one or more differential values 530, 540. The series 510 of differential data is processed such that the series 210 of data segments provided to the pre-processing module 310 is recreated. In FIG. 10, the initial value 520 in the series 510 of differential data becomes the first data segment 230 in the series 210 of data segments, i.e., the leftmost data segment 230 in the series 210 of data segments shown in FIG. 10. The initial value 530 is added to the first differential value 530 in the series 510 of differential data to provide the second data segment 230 in the series 210 of data segments. This second data segment 230 is added to the second differential value 530 in the series 510 of differential data to provide the third data segment 230 in the series 210 of data segments, i.e., the third data segment 230 in the series 210 of data segments shown in FIG. 10. This is repeated for all differential values 530, 540 in the list 510 of differential data provided to the post-processing module 410. After processing the last differential value 540 in the list 510 of differential data, the list of data segments 210 provided from the post-processing module 410 contains the same data as the list of data segments 210 provided to the corresponding pre-processing module 310. The post-processing module 410 may be described as delta-decoded data.

[0059] The post-processing module 410 requires information about how the series 510 of differential data is organized and configured. This information can be provided to the post-processing module in several different ways, such as via control bits in the data packet 220, via any other control provided to the post-processing module 410, by pre-configuration, and / or by analyzing the series 510 of differential data.

[0060] Referring to FIG. 11, a further embodiment of the post-processing module will be described. Similar to the pre-processing module 310, the post-processing module 410 can perform two or more iterations of delta decoding. The post-processing module 410 requires information regarding the number of iterations of delta decoding to be performed, and this information can be provided via any of the means described above, or any other suitable means for transmitting this information to the post-processing module 410.

[0061] The step of post-processing data pre-processed in two or more iterations in two or more iterations is illustrated in FIG. 12. This example is the reverse of that presented with reference to FIG. 8. A person skilled in the art will have no problem performing post-processing using two or more iterations of delta decoding after reading the present disclosure and referring to the description given in relation to the pre-processing module 310 and the details regarding post-processing given in relation to FIGS. 10 to 12.

[0062] (Partitioning and Appending) As schematically shown in FIG. 13, an embodiment of the partitioning module 320 receives a series 510 of difference data from the pre-processing module 310 and partitions the difference data 510 into at least two blocks 1310 of difference data provided to the encoding module 330. The blocks 1310 of difference data may all be of the same length, but may also be of very different lengths, or may have some blocks 1310 of difference data having the same length and other blocks 1310 of difference data having different lengths. Note that some of the blocks 1310 of difference data can include only the difference data 530, 540, but at least one of the blocks 1310 of difference data includes, for example, the first value 520 which is not a difference value. Of course, one of the blocks of difference data includes the last difference value 540.

[0063] The purpose of the splitting module 320 is to split the series 510 of difference data into blocks 1310 of difference data such that the blocks of difference data correlate with the characteristics of the series 210 of data segments and, as a result, correlate with the characteristics of the series 510 of difference data. The characteristics of the series 210 of data segments may be such that there is a higher variance at the start of the series 210 of data segments compared to the variance at the end of the series 210 of data segments. The opposite scenario is, of course, also conceivable. In any case, considering the encoding that the blocks 1310 of difference data undergo, it makes sense for the blocks 1310 of difference data to have as similar a variance as possible within the block. Alternatively or in addition, the blocks 1310 of difference data can have as similar difference values 530 as possible, i.e., as few distinct values as possible within the block.

[0064] In one embodiment of the splitting module 320, the number of blocks 1310 of difference data is a predefined number or a configurable number. In a further embodiment, the number of blocks 1310 of difference data is 4. This has been shown to be a particularly beneficial number of blocks when adapting an audio profile for use with a headset according to the teachings of the present disclosure. This is the result of empirical research conducted by the inventors of the present invention.

[0065] In one embodiment of the splitting module 320, the blocks 1310 of difference data have a predefined length or a configurable length, i.e., a predefined number of difference values or a configurable number of difference values 530.

[0066] In one embodiment of the splitting module 320, one block 1310 of difference data has a length of 1, i.e., the block contains only one value. In a further embodiment, the block 1310 of difference data having a length of 1 contains the first value 520 or the last difference value 540.

[0067] The length of the series 510 of differential data is known, and since the purpose of the splitting module 320 is to optimize the size of the generated data packet 220, adaptively determining the number of blocks and / or the length of each block will add overhead. This is because the data decryption system 400 requires this information in order to properly add data within its additional module 420. This can typically be achieved by having a length indicator associated with at least one of the blocks 1310 of differential data, and / or a block indicator indicating the number of blocks included in the data packet 220. Thereby, those skilled in the art will understand that the following embodiments are most preferably paired with, for example, the minimum length of each block 1310 of differential data, the maximum length of each block 1310 of differential data, the minimum number of blocks 1310 of differential data, and / or the maximum number of blocks 1310 of differential data. The maximum and minimum values listed above are predefined, configurable, or can be adapted via an iterative machine learning process.

[0068] In one embodiment, the length of each block 1310 of differential data and / or the number of blocks of differential data 1310 is adaptively determined.

[0069] In a further embodiment, the length of each block 1310 of differential data and / or the number of blocks of differential data is adaptively determined by minimizing the variance within each respective block 1310 of differential data.

[0070] In yet another further embodiment, the length of each block 1310 of differential data and / or the number of blocks of differential data is adaptively determined by minimizing the number of eigenvalues within each block 1310 of differential data.

[0071] In yet another embodiment, the length of each block 1310 of the differential data and / or the number of blocks of the differential data are adaptively determined by having different pre-defined configurable target values for the average value of the absolute values of the differential values 530 within each block 1310 of the differential data.

[0072] In yet a further embodiment, the length of each block 1310 of the differential data and / or the number of blocks of the differential data are adaptively determined by calculating a sliding average and a sliding variance over a number of differential data values 530. If the sliding average and the sliding variance exceed or fall below pre-defined or configurable thresholds of the sliding average and the sliding variance, the preceding differential data values 530 are added to the block 1310 of the differential data. This means that each block 1310 of the differential data has a certain expected confidence interval for its differential values 1310.

[0073] For example, in a preferred embodiment well-suited for the reversible compression of an audio profile, the number of blocks of the differential data is 4. One block 1310 of the differential data has a length of 1. The block 1310 of the differential data having a length of 1 includes the last differential value 540. This has been shown to be a particularly beneficial number of blocks when subjecting an audio profile for use with a headset to the teachings of the present disclosure. The audio profile is such that the last differential value 540 is significantly different from the differential values from the second last to the second, which means that the encoding of the blocks is more efficient. This is shown in more detail in connection with the examples given later in the present disclosure.

[0074] To achieve completeness, a schematic diagram of one embodiment of the additional module 420 is shown in FIG. 14. The additional module 420 receives, for example, a block 1310 of differential data provided by the decoding module 430 and reverses the process of the splitting module 320. Optionally, the decoding module 430 is provided with or obtains information regarding the number and / or length of the blocks of differential data. The information can be predefined or configurable, and alternatively or additionally, the information can be extracted as a block indicator and / or a length indicator from the data packet 220.

[0075] (Encoding and Decoding) As schematically shown in FIG. 15, the encoding module 330 is provided with, for example, one or more blocks 1310 of differential data from the splitting module 320 and provides one or more blocks 1510 of encoded differential data to, for example, the generating module 340. Each of the one or more blocks 1510 of encoded differential data is associated with a k-parameter 1520.

[0076] In an embodiment of the encoding module 330, the encoding is performed by Rice coding or encoding at least some of the blocks 1310 of differential data. For the sake of completeness and brevity, Rice coding of data is known in the art and is a form of Golomb coding adapted for binary coding. In Rice coding, the k-parameter 1520 is used when encoding a data sequence, and m = 2 kEncoding the numerical value x by setting. There are different ways of encoding. As a mere example, let q be the floor function of x / m, starting with q binary 1s, followed by the binary encoding of the remainder of the fraction, i.e., x - q, with k bits added after the binary 0s. Note that an implementation that adds q binary 0s and then a binary 1 is also possible. This is repeated for several k parameters, and the k parameter 1520 that results in the shortest, i.e., smallest, block 1510 of the encoded differential data is provided as the output to the generation module 340 together with the selected k parameter 1520.

[0077] From the above brief description of the Rice algorithm, it is clear that smaller k parameters 1520 are more efficient for a set of data with small values, and larger k parameters 1520 are more efficient for a set of data with large values.

[0078] Typically, in a series 210 of data segments including an audio profile, the blocks 1310 of differential data supplied to the encoding module 330 have different variances. This means that it is particularly beneficial to delta-encode the audio profile and divide it into blocks 1310 of differential data before encoding using Rice encoding. By having the possibility of using different k parameters 1520 for different blocks of the differential data 1310, it becomes possible to separately select the optimal, or nearly optimal, k parameter 1520 for each block of the differential data 1310 to be encoded. The audio profile typically has the property that the average value of the delta-encoded audio profile is different for different parts (blocks) of the audio profile. Similarly, the same reasoning can be applied to any series 210 of data segments with known properties.

[0079] In one embodiment of the encoding module 330, at least one of the blocks 1310 of differential data provided to the encoding module 330 is encoded using Rice encoding with a predefined or configurable k-parameter 1520.

[0080] In one embodiment of the encoding module 330, at least one of the blocks 1310 of differential data provided to the encoding module 330 is encoded using Rice encoding, and the encoding module 330 provides one k-parameter 1520 for each block 1510 of the encoded differential data.

[0081] In a further embodiment of the encoding module 330, the encoding module 330 calculates the average number of bits of the difference values 530, 540 for each block 1310 of the differential data provided to the encoding module 330. The calculated average number of bits is rounded to its nearest integer part, and this rounded average number of bits is used as the k-parameter 1520 for encoding the block 1310 of the differential data associated with the rounded average number of bits. This embodiment requires only a simple averaging of the number of bits, and a complete encoding of the blocks 1310 of the differential data is not required to determine an optimal or near-optimal k-parameter 1520. This has been achieved by the inventors' insightful invention of studying the Rice algorithm in the art and adapting the implementation to be as efficient as possible from both the processing cost and current consumption perspectives.

[0082] In yet another further embodiment of the symbolization module 330, the Rice encoding algorithm is executed multiple times for each block 1310 of differential data encoded with different k-parameters 1520, and the k-parameter 1520 that results in the shortest compressed block 1510 of differential data is provided as the output of the symbolization module 330 together with its associated k-parameter 1520. This can be implemented by stopping the iteration when the current length of the block 1510 of encoded differential data is longer than the length of the previous encoding of the same block 1310 of differential data with a previous k-parameter. Provided as the output from the symbolization module 330 is the block 1510 of encoded differential data generated from the previous iteration paired with its associated k-parameter 1520.

[0083] In a further embodiment of the symbolization module 330, the Rice encoding is iteratively executed using different k-parameters 1520 for a configurable or predefined maximum number of encodings. As the output from the symbolization module 330, the shortest block 1510 of encoded differential data and its associated k-parameter 1520 are provided.

[0084] In any embodiment of the symbolization module 330, at least one of the blocks 1310 of differential data provided to the symbolization module 330 can be encoded using Rice encoding with a predefined or configurable k-parameter 1520.

[0085] In any embodiment of the symbolization module 330, a block 1310 of difference data including an initial value 520 may not be symbolized. Additionally or alternatively, in any embodiment of the symbolization module 330, a block 1310 of difference data 0 including a last difference value 540 may not be symbolized. As an alternative embodiment of the symbolization module 330, a block 1310 of difference data including an initial value 520 and / or a block 1310 of difference data including a last difference value 540 may be symbolized using a predefined or configurable k-parameter 1520. Treating the block 1310 of difference data including the initial value 520 and / or the last difference value 540 separately is beneficial because the initial value 520 and / or the last difference value 540 are typically different and often larger than the difference value 530. This means that a k-parameter 1520 suitable for the difference value 530 adjacent to the initial value 520 or adjacent to the last difference value 540 may not be suitable for the initial value 520 and / or the last difference value 540, and the overall compression ratio may be reduced.

[0086] From the above description of the symbolization module 330, the decoding module 430 can be described as the inversion of the symbolization module 330, as schematically shown in FIG. 16. The decoding module 430 receives one or more blocks 1510 of symbolized difference data and, if not predetermined, receives a k-parameter 1520 associated with each of the one or more blocks 1510 of symbolized difference data. The decoding module 430 uses the k-parameter 1520 to decode the associated block 1510 of symbolized data by Rice decoding. In short, the initial fraction (x - q) is extracted by extracting the last k bits of the block 1510 of symbolized data. Ignoring binary 0 and extracting q binary 1s, the difference value 530 is decoded as a c / + fraction. This is repeated until the end of the block 1510 of symbolized data.

[0087] (Generation and Extraction) Referring to FIGS. 17a - e, the data packet 220 generated by the generation module 340 will be described. The order of the data presented in the referenced figures is for illustrative purposes only, and the order of the data within the data packet 220 is not important for the purposes of the present invention. The generation module 340 receives, from the encoding module 330, in some embodiments, a block 1510 of encoded differential data, along with the relevant k - parameters 1520. Phrase generating means arranging the binary data received from the encoding module 330 into one data packet 220 that includes all the data.

[0088] In one embodiment of the generation module 340, the data packet 220 (see FIG. 17a) comprises one or more blocks 1510 of encoded differential data. This embodiment has no overhead or metadata included in the data packet 220, and all parameters necessary to decode the data packet must be known, for example, predefined or reconstructable by the data decoding system 400.

[0089] In a further embodiment of the generation module 340, the data packet 220 (see FIG. 17b) comprises one or more blocks 1510 of encoded differential data and one or more k - parameters 1520 related to the one or more blocks 1510 of encoded differential data.

[0090] In a further embodiment of the generation module 340, the data packet 220 (see FIG. 17c) also comprises a delta - coding iteration indicator 1720 indicating the number of iterations for which delta - coding was performed by the pre - processing module 310.

[0091] In a further embodiment of the generation module 340, the data packet 220 (see FIG. 17d) includes the first value 520 or the last differential value 540 as a separate data block. The separate data block may or may not be encoded.

[0092] In a further embodiment of the generation module 340, the data packet 220 (see FIG. 17e) comprises a block number indicator 1730 and / or one or more block length indicators 1740. These indicators indicate the number of blocks and / or the length of one or more blocks provided by the splitting module 320.

[0093] In one embodiment, the delta coding iteration indicator 1720 is represented using 4 bits. Each of the k parameters 1520 is represented using 4 bits. The first value 520 is not encoded and is represented in 16 bits.

[0094] In a further embodiment, the delta coding iteration indicator 1720 is represented using 3 bits. Each of the k parameters 1520 is represented using 4 bits. The last difference value 540 is not encoded and is represented in 16 bits. The block number indicator 1730 and / or one or more block length indicators 1740 are represented in 2 bits.

[0095] The extraction module 440 operates in a manner opposite to that of the generation module 340. The extraction module 440 extracts the k parameters 1520 from the data packet 220. If information such as the delta coding iteration indicator 1720, the block number indicator 1730, and / or one or more block length indicators 1740 is provided to the extraction module 440 within the data packet 220, these parameters 1720, 1730, 1740 are also extracted. The data packet 220 will typically be in a known format meaning that the extraction module 440 knows the structure of the data packet 220 and can extract the data of the data packet accordingly. Alternatively, a header can be included in the data packet 220, which describes the structure of the data packet 220.

[0096] Note that the data packet 220 disclosed above is mainly for illustrative purposes. The data packet 220 may be interpreted in any suitable manner. For example, the order of the data is irrelevant to the purpose of the present invention. Different embodiments of the data packet 220 can be combined in any suitable manner, and those skilled in the art will understand how this is done and how it relates to, for example, the data encoding system 300 and the data decoding system 400 and related methods after digesting the content of the present disclosure.

[0097] From the description of the modules and the way they are communicatively connected, those skilled in the art will understand here that the teachings herein can be applied to any series 210 of data segments, regardless of length. If the series 210 of data segments has known characteristics, more data segments typically mean a higher sample rate of the series 210 of data segments. Typically, the series 210 of data segments includes data representing a FIR audio filter adapted to the user's hearing profile. The longer the filter, the greater the correlation between bits, and the preprocessing module 310 generates a series 510 of differential data with a very low variance. As a result, the encoding module 330 operates more efficiently and the overall compression ratio increases.

[0098] It should be noted that the relationship between the terms block of data 1310, 1510, block of differential data 1310, and block of encoded differential data 1510 is such that the terms block of data 1310, 1510 encompass either or both of the block of differential data 1310 or the block of encoded differential data 1510. The reason is simply that the data packet 220 described above can include one or more blocks 1510 of encoded differential data and one or more blocks 1310 of differential data, and the terms block of data 1310, 1510 are convenient.

[0099] In addition to this, the efficiency of compression and its associated decompression algorithm may be evaluated by its resource consumption in addition to the compression ratio. Resource consumption can be, for example, memory consumption, the number of processor operations required to complete it, current and / or energy consumption, etc. The invention presented herein is very efficient from both the perspective of the compression ratio and the perspective of resource consumption because it requires little overhead or metadata. The presented teachings can be implemented using simple arithmetic functions that result in low requirements on any hardware used to implement or execute the software code implementing the above modules 310, 320, 330, 340, 410, 420, 430, 440. This is particularly beneficial when compression or decompression is performed by a system with limited resources, such as the headset 120 of FIG. 1. As mentioned above, both compression and decompression may be performed either in the headset 120 or the mobile phone 110 of FIG. 1. This is possible due to the efficiency of the method taught herein.

[0100] (Compression and Decompression Method) Based on the presented modules, referring to FIG. 18, a reversible data compression method 1800 is presented. Method 1800 is suitable for being executed by the previously presented data encoding system 300. Method 1800 receives, for example, a series 210 of data segments by the preprocessing module 310. The series 210 of data segments has a known length and known characteristics. The known characteristics may include trends, amplitudes, the amount of change in the amount of change across the series 210 of data segments (i.e., how the amount of change changes across the series 210 of data segments), etc.

[0101] The series 210 of data segments is preprocessed 1810, for example, by the preprocessing module 310 to generate a series 510 of difference data. The series 510 of difference data includes an initial value 520 and one or more difference values 530, 540. The preprocessing 1810 may be performed in any way as disclosed herein, for example, in relation to the preprocessing module 310. The preprocessing 1810 may be an iterative process, and in such a case, the step of preprocessing may provide a delta coding iteration indicator 1720 indicating the number of iterations in which the preprocessing 1810 was performed.

[0102] The method 1800 further includes a step 1820 of dividing, for example, by a dividing module 320, the series 510 of difference data into at least two blocks 1310 of difference data. The dividing 1820 may be performed in any way presented herein, for example, in relation to the dividing module 320. Depending on the implementation, the dividing can also provide a block number indicator 1730 and / or one or more block length indicators 1740 in addition to at least two blocks 1310 of difference data.

[0103] Method 1800 further includes, for example, using Rice encoding to encode at least one of at least two blocks 1310 of differential data by an encoding module 330 at step 1830. The encoding step 1830 provides at least one block 1510 of encoded differential data. The encoding step 1830 can further provide a k parameter 1520 for at least one of the blocks 1510 of encoded differential data. For clarity, this means that any number of blocks 1510 of differential data may or may not be encoded with a predefined k parameter 1520 provided by the encoding step 1830, any number of blocks 1510 of differential data may be encoded iteratively as described in the previous section, may be provided with the associated k parameter 1520, and any number, but not all, of the blocks of differential data may remain unencoded. In addition, the encoding step 1830 may be performed in any of the methods presented herein, for example, in relation to the encoding module 330.

[0104] Method 1800 also includes, for example, generating at step 1840 a data packet 220 by a generation module 340 that includes a block 1510 of encoded differential data and any block 1310 of differential data not encoded in the encoding step 1830. The generating step can further include including one or more k parameters 1520 associated with one or more blocks 1510 of encoded differential data and / or any indicators associated with, for example, the splitting step 1820 or the preprocessing step 1810. In short, the generating step 1840 may be performed in any of the methods disclosed herein and may be configured to generate any of the data packets 210 referred to herein.

[0105] Referring to FIG. 19, a reversible data decompression method 1900 will be described. The method 1900 is suitable for being executed by the data decoding system 400 presented above. The method 1900, for example, receives data packets 220 by an extraction module 410. The data packets 220 are the data packets 220 generated by the reversible data compression method 1800 presented above.

[0106] The method 1900 includes, for example, a step 1940 of extracting one or more blocks of data by an extraction module 440, and the blocks of data include at least one block 1510 of encoded differential data. The step 1940 of extraction may include extracting one or more k parameters related to a block of unencoded differential data, a part or all of the extracted block 1510 of encoded differential data, and / or extracting one or more indicators related to, for example, the splitting step 1820 or the preprocessing step 1810 in the reversible data compression method 1800. The step 1940 of extraction may be executed in any method presented in this specification, for example, in relation to the extraction module 440.

[0107] The reversible data decompression method 1900 further includes, for example, decoding at least one block 1510 of encoded differential data by a decoding module 430 to provide at least one block 1310 of differential data in 1930. The step of decoding may be provided together with one or more k parameters 1520 to be used for decoding in 1930, but may also be decoded using pre-defined or configurable k parameters 1520. The step 1930 of decoding may be executed in any method presented in this specification, for example, in relation to the decoding module 430.

[0108] Method 1900 further includes, for example, adding, by an additional module 420, one or more blocks 1310 of differential data and any blocks of unencoded differential data at 1920 to form a series 510 of differential data including an initial value 520 and one or more differential values 530, 540. The adding step 1920 may be performed in any of the methods presented herein, for example, in relation to the additional module 420.

[0109] Method 1900 also includes, for example, post-processing, by a post-processing module, the series 510 of differential data at 1910 to provide a series 210 of data segments. The post-processing step 1910 generates different data segments 230 within the series 210 of data segments using the initial value 520 and the differential values 530, 540 within the series 510 of differential data. The post-processing step 1910 can be performed in any of the methods presented herein, for example, in relation to the post-processing module 410.

[0110] Referring to FIG. 20, a portable electronic device 2000 is shown. The portable electronic device can include a controller 2010, a memory 2020, and a communication interface 2030. The controller 2010 may be configured to retrieve an audiometric profile adapted to a user from the memory 2020, and the audiometric profile is represented by a series 210 of data segments. The controller 2020 can cause the audiometric profile to conform to the reversible data compression method 1800 presented above. The controller can be further configured to transmit data packets 220 generated by the reversible data compression method 1800 to a second portable electronic device via the interface 2030. In some embodiments of the portable electronic device 2000, the portable electronic device 2000 is the mobile phone 110 of FIG. 1 and / or the second portable electronic device is the headset 120 of FIG. 1. In other embodiments, the portable electronic device 2000 is the headset 120 of FIG. 1 and / or the second portable electronic device is the mobile phone 110 of FIG. 1.

[0111] In FIG. 21, a portable electronic device 2100 is presented. This portable electronic device 2100 can include a controller 2110, a memory 2120, and a communication interface 2130. The controller 2110 may be configured to receive a data packet 220 via the communication interface 2130 and cause the data packet to generate a series of data segments according to the reversible data compression method 1900 described above. The series of data segments 210 may represent an audio profile that can be associated with a user of the portable electronic device 2100. The controller 2110 may further be configured to store the audio profile in the memory 2120. In some embodiments of the portable electronic device 2100, the portable electronic device 2100 is the headset 120 of FIG. 1. In other embodiments of the portable electronic device 2100, the portable electronic device 2100 is the mobile phone 110 of FIG. 1.

[0112] FIG. 22 shows a computer program product 2200 configured to execute the reversible data compression method 1800 when executed by a controller. The computer program product 2200 may be configured to implement a part of the method 1800 or one or more of the modules 310, 320, 330, 340 of the data encoding system 300 in some embodiments.

[0113] FIG. 23 shows a computer program product 2300 configured to execute the reversible data decompression method 1900 when executed by a controller. The computer program product 2300 may be configured to implement a part of the method 1900 or one or more of the modules 410, 420, 430, 440 of the data decoding system 400 in some embodiments.

[0114] Referring to FIGS. 24 and 25a - b, an example of how the series 210 of data segments and the series 510 of difference data look is shown. In FIG. 24, the time response of the low - pass filter function sin(x) / x [-8π < x < 8π] is shown as the series 210 of data segments. The low - pass filter function is sampled at a high sample rate that produces a very smooth series 210 of data segments. Those skilled in the art will recognize that this is for illustrative purposes and that a more efficient sample rate can be selected that at least satisfies the Nyquist - Shannon sampling theorem. As can be seen from FIG. 24 and as is known in the art, one characteristic of a time - domain filter is that the time - domain filter is mirrored around the center frequency. This means that only the first half or the second half of the data needs to be part of the series 210 of data segments. The missing part is a mirror of the represented part and can be easily reproduced. Although not specifically mentioned, such omission and reproduction of parts of such a data series may be performed, for example, by the pre - processing module 310 and / or the post - processing module 410. Referring to FIG. 25a, the series 210 of data segments is reduced to the first half of the series 210 of data segments in FIG. 24. This series 210 of data segments has undergone pre - processing as described earlier in this disclosure. The solid line in FIG. 25a represents the difference data 2510 after one iteration of delta encoding, and the dashed line represents the difference data 2520 after two iterations of delta encoding. For reasons of scaling, the difference data 2520 after two iterations is provided together with the series 510 of difference data in FIG. 25b. This is the effect of delta encoding, and those skilled in the art can grasp the difference in scale by comparing the plot of the difference data 2520 after two iterations in FIG. 25a with the difference data 2520 after two iterations in FIG. 25b. The series 510 of difference data corresponds to a third delta - encoding iteration. As can be seen in FIG. 25b, both the first value 520 and the last difference value 540 are prominent. Typically, when the difference is a FIR audio filter, the last difference value 540 is more prominent than the first value 520.Therefore, separating this value from other difference values 530 is beneficial as it increases the variance, mean, and k parameter 1520 provided by the encoding module 330.

[0115] It should be emphasized that the methods and apparatuses disclosed herein have in some cases been specifically described for transferring audio profiles between two portable electronic devices 110, 120. This is merely one use of the concepts of the present invention, and the present teachings can be very well used in a single electronic device regardless of whether it is portable. For example, in order to save storage space within the device, the size of the series of data segments 210 can be reduced. This means that the same electronic device performs both compression and decompression. As a result, in relation to compression, the series of data segments 210 can be received from any suitable storage means or via any suitable interface and output to any suitable storage means or via any suitable interface. Similarly, in relation to decompression, the data packets 220 can be received from any suitable storage means or via any suitable interface and output to any suitable storage means or via any suitable interface.

[0116] (Items) The scope of the present invention is defined in the appended claims, and the following items should be regarded as exemplary embodiments of the present invention. (Item 1) A reversible data compression method (1800), comprising: receiving a series of data segments (210) of known length and known characteristics; preprocessing (1810) the series of data segments (210) to generate a series of difference data (510) including an initial value (520), one or more difference values (530), and a last difference value (540); dividing (1820) the series of difference data (510) into at least two blocks (1310) of difference data; Step (1830) of encoding at least one block (1310) of differential data using Rice encoding, thereby providing at least one block (1510) of encoded differential data Step (1840) of generating a data packet (220) including the at least one block (1510) of encoded differential data and any block (1310) of unencoded differential data A reversible data compression method (1800) including (Item 2) In the step of generating (1840), the data packet (220) further includes one or more k-parameters (1520), and each k-parameter (1520) is associated with a block (1510) of encoded differential data. The reversible data compression method (1800) according to Item 1 (Item 3) The encoding step (1830) further includes a step of Rice-encoding at least one block (1310) of differential data with an associated k-parameter (1520), and the k-parameter is determined by calculating the average number of bits of the differential values (530, 540) of the associated block (1310) of differential data. The reversible data compression method (1800) according to Item 2 (Item 4) The encoding step (1830) further includes a step of repeatedly Rice-encoding each block (1310) of differential data with a predefined or configurable number of k-parameters (1520), and a step of providing the shortest block (1510) of encoded differential data of each block (1310) of differential data to the step of generating (1840) together with the k-parameter (1520) associated with the shortest block (1510) of encoded differential data. The reversible data compression method (1800) according to Item 2 (Item 5) In the step (1810) of performing the preprocessing, the series (510) of difference data is generated by one or more repetitions of delta encoding of the series (210) of data segments, and the reversible data compression method (1800) according to any one of items 1 to 4. (Item 6) In the step (1840) of generating, the data packet (220) further includes a delta encoding repetition indicator (1720) indicating the number of times each of the difference values (530) is delta encoded, and the reversible data compression method (1800) according to item 5. (Item 7) In the preprocessing (1810), several repetitions are performed, and each of the series (510) of difference data generated from each repetition of the preprocessing (1810) is subjected to the dividing step (1820) and the encoding step (1830). Before the step (1840) of generating, the reversible data compression method (1800) calculates the size of each series (1510) of encoded difference data, and uses the series (1510) of encoded difference data with the minimum size in the generating step (1840). The reversible data compression method (1800) according to item 6 further includes this step. (Item 8). The delta encoding is repeated a preset number of times or a configurable number of times, and the number of repetitions is 2 to 10 times, preferably 3 to 7 times, and most preferably 4 or 5 times, and the reversible data compression method (1800) according to any one of items 5 to 7. (Item 9) The delta encoding is repeated until the variance of the difference values (530) is minimized or falls below a predefined variance threshold or a configurable variance threshold, and the reversible data compression method (1800) according to item 6. (Item 10) The delta encoding is repeated until the sum of the absolute values of the difference values (530) is minimized or falls below a predefined average threshold or a configurable average threshold, and the reversible data compression method (1800) according to item 6. (Item 11) The delta encoding is repeated between a predefined maximum number of iterations or a configurable maximum number of iterations, and is the reversible data compression method (1800) described in any one of Items 6, 7, 9, or 10. (Item 12) The reversible data compression method (1800) according to Item 11, wherein the maximum number of iterations is 6. (Item 13) In the step of dividing (1820), the number of blocks of the differential data is a predefined number or a configurable number, and is the reversible data compression method (1800) described in any one of Items 1 to 12. (Item 14) In the step of dividing (1820), the series (510) of differential data is divided into a total of four blocks (1310) of differential data, and is the reversible data compression method (1800) described in any one of Items 1 to 13. (Item 15) In the step of generating (1840), the data packet (220) further includes a block number indicator (1730) indicating the number of blocks into which the series (510) of differential data is divided, and is the reversible data compression method (1800) described in any one of Items 1 to 14. (Item 16) In the step of generating (1840), the data packet (220) further includes at least one block length indicator (1740) related to at least one of the blocks into which the series (510) of differential data is divided, and is the reversible data compression method (1800) described in any one of Items 1 to 15. (Item 17) In the step of generating (1840), the data packet (220) further includes one block length indicator (1740) related to each block (1510) of the encoded differential data and any block (1310) of the differential data included in the data packet (220), and is the reversible data compression method (1800) described in any one of Items 1 to 16. (Item 18) In the step (1820) of dividing, the number of blocks is adaptively determined by repeatedly calculating the minimum variance, and the reversible data compression method (1800) according to any one of Items 14 to 16. (Item 19) The series (510) of differential data is divided into blocks of equal length, and the reversible data compression method (1800) according to any one of Items 1 to 18. (Item 20) At least two of the blocks (1310) of differential data have different lengths, and the reversible data compression method (1800) according to any one of Items 1 to 18. (Item 21) One block (1310) of differential data has a length of 1, and the reversible data compression method (1800) according to any one of Items 1 to 20. (Item 22) In the step (1820) of dividing, one block (1310) of differential data includes only the last differential value (540), and the differential value (530) and the first value (520) are included in at least one other block (1310) of differential data, and the reversible data compression method (1800) according to any one of Items 1 to 21. (Item 23) The step (1830) of encoding includes not encoding the block (1310) of differential data including the last differential value (540), and the reversible data compression method (1800) according to any one of Items 1 to 22. (Item 24) The series (210) of data segments includes 32 segments, and the reversible data compression method (1800) according to any one of Items 1 to 23. (Item 25) The characteristics of the series (210) of data segments are the characteristics of a digital filter, and the reversible data compression method (1800) according to any one of Items 1 to 24. (Item 26) The reversible data compression method (1800) according to item 25, wherein the digital filter is an FIR audio filter. (Item 27) The series (210) of data segments is the reversible data compression method (1800) according to any one of items 1 to 26, which describes a personal hearing profile associated with a user. (Item 28) The hearing profile is the reversible data compression method (1800) according to item 27, which is adapted for use with a headset (120). (Item 29) A reversible data decompression method (1900) for decompressing a data packet (220) generated by the reversible data compression method (1800) according to any one of items 1 to 28, wherein the reversible data decompression method (1900) A step (1940) of extracting a block (1310, 1510) of data from the data packet (220), wherein at least one block (1310, 1510) of data is a block (1510) of encoded differential data, the step; Decoding (1930) the at least one block (1510) of encoded differential data and providing one or more blocks (1310) of differential data; Adding (1920) the one or more blocks (1310) of differential data to a series (510) of differential data including an initial value (520), a series (530) of differential data, and a last differential value (540); Based on the initial value (520), post-processing (1910) the series (510) of differential data to provide a series (210) of data segments; A reversible data decompression method (1900) including. (Item 30) The data packet (220) further includes one or more k-parameters (1520), and each k-parameter (1520) is associated with a block (1510) of encoded differential data. The extracting step (1940) includes extracting the one or more k-parameters (1520) from the data packet (220). The decrypting step (1920) further includes decrypting a block (1510) of encoded differential data using the associated k-parameters (1520), the reversible data decompression method (1900) according to item 29. (Item 31) The series (510) of differential data included in the data packet (220) is generated by delta-encoding the series (210) of data segments one or more times. The post-processing step (1910) includes delta-decompressing the series (510) of differential data one or more times. The reversible data decompression method (1900) according to item 29 or 30. (Item 32) The data packet (220) further includes a delta-encoding iteration indicator (1720) indicating the number of times each of the differential values (530) within the data packet (220) is delta-encoded. The extracting step (1940) further includes extracting the delta-encoding iteration indicator (1720) from the data packet (220). The post-processing step (1910) is executed the same number of times indicated by the delta-encoding iteration indicator (1720). The reversible data decompression method (1900) according to any one of items 29 to 31. (Item 33) The series 510 of differential data (210) included in the data packet (220) is delta-encoded a preset number of times or a configurable number of times. The number of times is from 2 to 10 times, preferably from 3 to 7 times, and most preferably 4 or 5 times. The post-processing step (1910) is executed the preset number of times or the configurable number of times. The reversible data decompression method (1900) according to any one of items 29 to 32. (Item 34) The blocks of the data (1310, 1510) included in the data packet are a predefined number of blocks or a configurable number of blocks, The extracting step (1940) further includes extracting the predefined number of blocks or the configurable number of blocks, The reversible data decompression method (1900) according to any one of Items 29 to 33. (Item 35) The reversible data decompression method (1900) of Item 34, wherein the predefined number of blocks or the configurable number of blocks is 4. (Item 36) The data packet (220) further includes a block number indicator (1730) indicating the number of blocks of the differential data into which the series (510) of differential data is divided, The extracting step (1940) further includes extracting the block number indicator (1730) from the data packet (220), and extracting data of the same number of blocks as indicated by the block number indicator (1730) from the data packet (220). The reversible data decompression method (1900) according to any one of Items 29 to 35. (Item 37) The data packet (220) further includes at least one block length indicator (1740) related to at least one of the blocks (1310, 1510) of the data into which the series (510) of differential data is divided, The extracting step (1940) further includes extracting at least one block length indicator (1740) and using the block length indicator (1740) to extract one or more blocks (1310, 1510) of data from the data packet (220), and the reversible data decompression method (1900) according to any one of Items 29 to 36. (Item 38) One block (1310) of the differential data included in the data packet (220) includes only the last difference value (540), and the difference value (530) is included in at least one other block (1310) of the differential data of the data packet (220). The extracting step (1940) further includes extracting one block (1310, 1510) of data including the last difference value (540) and at least one other block (1310, 1510) of data including one or more difference values (530) and the first value (520). The reversible data decompression method (1900) according to any one of items 29 to 37. (Item 39) The series (510) of differential data included in the data packet (220) is divided into differential data of a total of four blocks (1310, 1510). The extracting step (1940) further includes extracting data of a total of four blocks (1310, 1510). The reversible data decompression method (1900) according to any one of items 29 to 39. (Item 40) The block (1310) of the differential data including the last difference value (540) included in the data packet (220) is not encoded. The decoding step (1920) is not applied to the block (1310) of data including the last difference value (540). The reversible data decompression method (1900) according to any one of items 29 to 39. (Item 41) A portable electronic device including a controller, a memory, and a communication interface. The controller is configured to obtain an audio profile adapted to a user from the memory and generate a compressed data packet according to the method according to any one of items 1 to 31. The controller is further configured to transmit the compressed data packet to a second portable electronic device via the communication interface. Portable electronic device. (Item 42) The mobile electronic device according to item 41, wherein the mobile electronic device is a mobile phone. (Item 43) A mobile electronic device comprising a controller, a memory, and a communication interface, wherein the controller is configured to receive compressed data packets via the communication interface and generate a series (210) of data segments according to the method described in any one of items 32 to 43, and the controller is further configured to store the series (210) of provided data segments in the memory as a hearing profile. (Item 44) The mobile electronic device according to item 43, wherein the mobile electronic device is a headset. (Item 45) A computer program product configured to execute the reversible data compression method described in any one of items 1 to 28 when executed by a controller. (Item 46) A computer program product configured to execute the reversible data decompression method described in any one of items 29 to 40 when executed by a controller.

Claims

Claim 1 A reversible data compression method (1800), comprising: receiving a series (210) of data segments of known length and of known characteristics including a change amount of a trend, an amplitude, and / or a change amount of a change amount over the series (210) of data segments; preprocessing (1810) the series (210) of data segments to generate a series (510) of differential data including an initial value (520), one or more difference values (530), and a last difference value (540) by repeatedly performing delta encoding of the series (210) of data segments until the sum of the absolute values of the difference values (530) is minimized or the sum of the absolute values of the difference values (530) is below a predefined or configurable threshold; dividing (1820) the series (510) of differential data into at least two blocks (1310) of differential data based on the known characteristics such that the variance within the blocks (1310) and / or the difference values (530) are as similar as possible; encoding (1830) at least one block (1310) of differential data using Rice encoding, thereby providing at least one block (1510) of encoded differential data; generating (1840) a data packet (220) including at least one block (1510) of encoded differential data, at least one block (1310) of unencoded differential data, and a delta encoding iteration indicator (1720) indicating the number of times each of the difference values (530) has been delta encoded; A reversible data compression method (1800) comprising the above steps. Claim 2 The reversible data compression method (1800) according to claim 1, wherein the known characteristic of the series (210) of data segments is that the variance at one end of the series (210) of data segments is higher than the variance at the other end of the series (210) of data segments. Claim 3 In the generating step (1840), the data packet (220) further includes one or more k parameters (1520), each k parameter (1520) being associated with a block (1510) of encoded differential data. The reversible data compression method (1800) according to claim 1 or 2. Claim 4 The step of encoding (1830) further includes the step of Rice-encoding at least one block (1310) of the differential data with an associated k-parameter (1520), the k-parameter being determined by calculating the average number of bits of the differential values (530, 540) of the associated block (1310) of the differential data, the reversible data compression method (1800) according to claim 3.

5. In the step of dividing (1820), one block (1310) of the differential data includes only the last differential value (540), and the differential value (530) and the first value (520) are included in at least one other block (1310) of the differential data, the reversible data compression method (1800) according to any one of claims 1 to 4.

6. The step of encoding (1830) includes not encoding the block (1310) of the differential data including the last differential value (540), the reversible data compression method (1800) according to any one of claims 1 to 5.

7. The characteristics of the series of data segments are the characteristics of a digital FIR audio filter, the reversible data compression method (1800) according to any one of claims 1 to 6.

8. A reversible data decompression method (1900) for decompressing a data packet (220) generated by the reversible data compression method (1800) according to any one of claims 1 to 7, the reversible data decompression method (1900) comprising: The step of extracting blocks (1310, 1510) of data from the data packet (220), at least one block (1310, 1510) of data being a block (1510) of encoded differential data, at least one block (1310) of unencoded differential data, and a delta encoding iteration indicator (1720) indicating the number of times each of the differential values (530) in the data packet (220) is delta-encoded; The step of Rice-decoding the at least one block (1510) of encoded differential data (1930) and providing one or more blocks (1310) of differential data; Adding the one or more blocks (1310) of differential data to one series (510) of differential data including an initial value (520), a series (530) of differential data, and a last differential value (540) (step 1920); Post-processing the series (510) of differential data (1910) by delta-decoding the series (510) of differential data the same number of times as indicated by the delta-coding iteration indicator (1720) based on the initial value (520) to generate a series (210) of data segments; A reversible data decompression method (1900) including the above. **Claim 9** The data packet (220) further includes one or more k-parameters (1520), and each k-parameter (1520) is associated with a block (1510) of encoded differential data. The extracting step (1940) includes extracting the one or more k-parameters (1520) from the data packet (220). The decoding step (1930) further includes decoding a block (1510) of encoded differential data using the associated k-parameters (1520). The reversible data decompression method (1900) according to claim 8. **Claim 10** One block (1310) of differential data included in the data packet (220) includes only the last differential value (540), and the differential values (530) are included in at least one other block (1310) of differential data in the data packet (220). The extracting step (1940) further includes extracting one block (1310, 1510) of data including the last differential value (540) and at least one other block (1310, 1510) of data including one or more differential values (530) and the initial value (520). The reversible data decompression method (1900) according to claim 8 or 9. **Claim 11** The block (1310) of differential data including the last differential value (540) included in the data packet (220) is one of the at least one block (1310) of non-encoded differential data. The decoding step (1930) is not applied to the block (1310) of data including the last differential value (540). The reversible data decompression method (1900) according to any one of claims 8 to 10.

12. A portable electronic device (2000) comprising a controller (2010), a memory (2020), and a communication interface (2030), wherein the controller (2010) obtains a hearing profile adapted to a user from the memory (2020), and causes the hearing profile to be in accordance with the reversible data compression method (1800) according to any one of Claims 1 to 7 to generate data packets (220), and the controller (2010) is further configured to transmit the data packets (220) to a second portable electronic device via the communication interface (2030).

13. A portable electronic device (2100) comprising a controller (2110), a memory (2120), and a communication interface (2130), wherein the controller (2110) receives data packets (220) via the communication interface (2130), and causes the data packets to be in accordance with the reversible data decompression method (1900) according to any one of Claims 8 to 11 to generate a series of data segments (210), and the controller (2110) is further configured to store the series of data segments (210) in the memory as a hearing profile.

14. A computer program (2200) configured to execute the reversible data compression method (1800) according to any one of Claims 1 to 7 when executed by a controller.

15. A computer program (2300) configured to execute the reversible data decompression method (1900) according to any one of Claims 8 to 11 when executed by a controller.

Citation Information

Patent Citations

  • Still image transmission system

    JP1996340539A

  • Data file encoding method

    JP2005210584A

  • Compressing language models with Golomb coding

    US7363225B2