IP Library Granted Patent US 9,413,387
Granted Patent B2
US 9,413,387 · App. 14/859,043 · Granted Aug 9, 2016

Data compression using entropy encoding

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,413,387
App. No.
14/859,043
Granted
Aug 9, 2016
Kind
B2
Abstract

Data values can be entropy encoded, as part of a data compression process, according to a predetermined variable-length entropy coding scheme (e.g. based on exponential Golomb coding) such that they have ≧1 prefix bits and ≧0 suffix bits. A corresponding entropy decoding process can be performed, whereby the prefix bits are analysed to determine bit-boundaries between the received entropy encoded data values. The suffix bits and the determined bit-boundaries are used to decode the entropy encoded data values. In this way, multiple bit-boundaries can be found during the same clock cycle, e.g. by analysing the prefix bits in parallel decode units, thereby allowing for multiple entropy encoded data values (encoded using a variable-length coding scheme) to be decoded in the same clock cycle.

Claims (52)

1. An entropy decoding module configured to perform entropy decoding on a sequence of entropy encoded data values, wherein the entropy encoded data values have been encoded according to a predetermined variable-length entropy coding scheme such that each of the entropy encoded data values comprises one or more first bits and zero or more second bits, wherein for each of the encoded data values the number of first bits is related to the number of second bits according to a predetermined relationship of the entropy coding scheme, and wherein each of a plurality of bit locations in the sequence of entropy encoded data values is predetermined by the entropy coding scheme to include either a first bit or a second bit, the entropy decoding module being configured to:

receive the sequence of entropy encoded data values;

separate the first bits of the received entropy encoded data values from the second bits of the received entropy encoded data values based on the bit locations of the bits in the sequence of entropy encoded data values in accordance with the entropy coding scheme;

analyse the separated first bits of the received entropy encoded data values to determine bit-boundaries between the received entropy encoded data values in accordance with the predetermined relationship between the number of first bits and the number of second bits for each of the received encoded data values; and

use the second bits and the determined bit-boundaries to decode the entropy encoded data values in accordance with the predetermined variable-length entropy coding scheme.

2. The entropy decoding module of claim 1 wherein the bit locations in the sequence of entropy encoded data values are predetermined such that, for encoded data values comprising one or more of said second bits, at least some of the first bits are interleaved with the second bits according to a predetermined interleave format of the entropy coding scheme, and wherein the entropy decoding module is further configured to separate the first bits from the second bits by de-interleaving the interleaved first and second bits of the received entropy encoded data values in accordance with the predetermined interleave format.

3. The entropy decoding module of claim 1 comprising a plurality of parallel decode units and one or more merging units, wherein the entropy decoding module is configured to analyse the first bits by:

splitting the first bits into a plurality of sections and providing the sections to respective ones of the parallel decode units; and

analysing the sections in the decode units to determine the bit-boundaries within the sections and outputting results of the analysis from the decode units to the one or more merging units.

4. The entropy decoding module of claim 3 wherein the decode units are configured to output carry out bits if first bits of encoded data values are present, but do not finish, within a respective one of the sections, the carry out bits being for use by the one or more merging units in combining the results of the analysis of each of the sections to determine the entropy decoded data values.

5. The entropy decoding module of claim 3 wherein there are seven of said parallel decode units, and wherein said one or more merging units comprises three first-level merging units, two second-level merging units and one third-level merging unit, wherein:

each of the first-level merging units is configured to receive and combine the results of the analysis output from a respective pair of the decode units,

one of the second-level merging units is configured to receive and combine results output from two of the first-level merging units,

the other second-level merging unit is configured to receive and combine results output from the remaining first-level merging unit and the remaining decode unit, and

the third-level merging unit is configured to receive and combine results output from the second-level merging units.

6. The entropy decoding module of claim 1 wherein the entropy encoded data values are from a block of entropy encoded data values, and wherein the entropy decoding module is configured to decode the entropy encoded data values from a line of the block on each of a plurality of iterations.

7. The entropy decoding module of claim 2 wherein the entropy encoded data values are from a block of entropy encoded data values, and wherein the entropy decoding module is configured to decode the entropy encoded data values from a line of the block on each of a plurality of iterations, and wherein for each of the entropy encoded data values the number of first bits is one greater than the number of second bits, and wherein according to the predetermined interleave format, for each line of entropy encoded data values, one of the first bits from each of the encoded data values in the line are grouped together into a first field, and the remaining first and second bits of each of the encoded data values in the line are interleaved in an alternating manner in a second field,

wherein the entropy decoding module is configured to de-interleave the interleaved first and second bits of the received entropy encoded data values by splitting the odd bits of the second field from the even bits of the second field to thereby form a stream of first bits and a corresponding stream of second bits.

8. The entropy decoding module of claim 1 wherein the entropy decoding module is configured to determine the bit-boundaries between the received entropy encoded data values without analysing the second bits of the received entropy encoded data values.

9. The entropy decoding module of claim 1 wherein the first bits have a format in accordance with unary coding, and wherein the second bits are binary bits.

10. The entropy decoding module of claim 1 wherein the first bits are prefix bits and the second bits are suffix bits of the entropy encoded data values.

11. A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when processed at a computer system for generating a manifestation of an integrated circuit, cause the computer system to generate a manifestation of an entropy decoding module configured to perform entropy decoding on a sequence of entropy encoded data values, wherein the entropy encoded data values have been encoded according to a predetermined variable-length entropy coding scheme such that each of the entropy encoded data values comprises one or more first bits and zero or more second bits, wherein for each of the encoded data values the number of first bits is related to the number of second bits according to a predetermined relationship of the entropy coding scheme, and wherein each of a plurality of bit locations in the sequence of entropy encoded data values is predetermined by the entropy coding scheme to include either a first bit or a second bit, the entropy decoding module being configured to:

receive the sequence of entropy encoded data values;

separate the first bits of the received entropy encoded data values from the second bits of the received entropy encoded data values based on the bit locations of the bits in the sequence of entropy encoded data values in accordance with the entropy coding scheme;

analyse the separated first bits of the received entropy encoded data values to determine bit-boundaries between the received entropy encoded data values in accordance with the predetermined relationship between the number of first bits and the number of second bits for each of the received encoded data values; and

use the second bits and the determined bit-boundaries to decode the entropy encoded data values in accordance with the predetermined variable-length entropy coding scheme.

12. An entropy encoding module configured to perform entropy encoding on a plurality of data values to form a sequence of entropy encoded data values according to a predetermined variable-length entropy coding scheme, the entropy encoding module being configured to:

receive the data values;

determine, for each of the received data values, an entropy encoded data value according to the entropy coding scheme, whereby the entropy encoded data values comprise one or more first bits and zero or more second bits, wherein for each of the encoded data values the number of first bits is related to the number of second bits according to a predetermined relationship of the entropy coding scheme; and

form the sequence of entropy encoded data values from the determined entropy encoded data values, wherein each of a plurality of bit locations in the sequence of entropy encoded data values is predetermined by the entropy coding scheme to include either a first bit or a second bit.

13. The entropy encoding module of claim 12 configured to form the sequence of entropy encoded data values by:

interleaving, for encoded data values comprising one or more of said second bits, at least some of the first bits with the second bits according to a predetermined interleave format of the entropy coding scheme.

14. The entropy encoding module of claim 12 wherein the data values are from a block of data values, and wherein the entropy encoding module comprises a plurality of first encode units configured to:

receive the respective data values from a line of the block;

determine the second bits of the entropy encoded data values of the line; and

determine an indication of the size of each of the entropy encoded data values of the line.

15. The entropy encoding module of claim 14 configured to form the sequence of entropy encoded data values by interleaving, for encoded data values comprising one or more of said second bits, at least some of the first bits with the second bits according to a predetermined interleave format of the entropy coding scheme, wherein the entropy encoding module further comprises one or more second encode units configured to:

receive the second bits and the indications of the sizes of the entropy encoded data values of the line;

determine first bits of the entropy encoded data values of the line based on the received indications of the sizes of the entropy encoded data values; and

interleave the determined first bits with the received second bits of the entropy encoded data values.

16. The entropy encoding module of claim 15 further comprising a processing unit configured to:

receive the indications of the sizes of the entropy encoded data values of the line;

determine one of the first bits of each of the entropy encoded data values of the line based on the received indications of the sizes of the entropy encoded data values; and

group said one of the first bits from each of the encoded data values in the line together into a first field in accordance with the predetermined interleave format.

17. The entropy encoding module of claim 16 wherein for each of the entropy encoded data values the number of first bits is one greater than the number of second bits,

and wherein the second encode units are configured to interleave the first bits, which are not grouped into the first field, with the received second bits of the entropy encoded data values in an alternating manner.

18. The entropy encoding module of claim 12 further comprising a data store configured to store the entropy encoded data values.

19. The entropy encoding module of claim 12 further comprising an encoding indicator unit configured to set an indicator to indicate the coding scheme used to encode the data values.

20. A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when processed at a computer system for generating a manifestation of an integrated circuit, cause the computer system to generate a manifestation of an entropy encoding module configured to perform entropy encoding on a plurality of data values to form a sequence of entropy encoded data values according to a predetermined variable-length entropy coding scheme, the entropy encoding module being configured to:

receive the data values;

determine, for each of the received data values, an entropy encoded data value according to the entropy coding scheme, whereby the entropy encoded data values comprise one or more first bits and zero or more second bits, wherein for each of the encoded data values the number of first bits is related to the number of second bits according to a predetermined relationship of the entropy coding scheme; and

form the sequence of entropy encoded data values from the determined entropy encoded data values, wherein each of a plurality of bit locations in the sequence of entropy encoded data values is predetermined by the entropy coding scheme to include either a first bit or a second bit.

Assignments (4)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY'S ADDRESS PREVIOUSLY RECORDED ON REEL 037020 FRAME 0882. ASSIGNOR(S) HEREBY CONFIRMS THE SUBMISSION IS TO CORRECT AN ERROR IN A COVER SHEET PREVIOUSLY RECORDED. Recorded Nov 18, 2015
From: FENNEY, SIMON
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 037127/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: FENNEY, SIMON
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 037020/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: FENNEY, SIMON
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 037022/0250 →