IP Library Granted Patent US 7,737,870
Granted Patent B1
US 7,737,870 · App. 12/204,788 · Granted Jun 15, 2010

Bit-stream huffman coding for data compression

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 7,737,870
App. No.
12/204,788
Granted
Jun 15, 2010
Kind
B1
Abstract

Bit-stream Huffman coding may be used for data compression to quickly and efficiently compress relatively small and large datasets. A symbol used in data compression may not be a byte or 8 bits. Rather it has any number of bits. For a certain dataset, a symbol has a dynamic number of bits according to the data size. A symbol may have less than 8 bits for a small dataset, or more than 8 bits for a large dataset. For rapid processing, a large dataset may be broken into smaller datasets that are fast encoded in parallel. Accordingly, the Huffman encoding inputs from a bit-stream instead of a conventional byte-stream and outputs a bit-stream. In particular, bit-stream Static and Adaptive Huffman codings are presented with extended algorithms. Hardware implementation with parallel Huffman encoders and decoders is also illustrated for fast network data compression.

Claims (41)

1. A method of bit-stream Huffman coding for data compression, the method comprising the steps of:

obtaining a dataset to be compressed, the dataset containing a plurality of bytes of data, each byte having a same number of bits;

defining a symbol length based on a length of the dataset, the symbol length defining a length of symbols to be used in a Huffman coding process to compress the data of the dataset, the symbol length being defined without regard to the number of bits in a byte;

converting the dataset to a bit stream;

encoding the bit stream using the Huffman coding process by extracting symbols with the defined symbol length from the bit stream and outputting Huffman codes corresponding to the extracted symbols to generate a compressed dataset.

2. The method of claim 1 , wherein the dataset contains a plurality of bytes of data, each of which is eight bits in length.

3. The method of claim 2 , wherein the symbol length is defined dynamically by assessing the length of the dataset and choosing a symbol length that will approximately 5% overhead.

4. The method of claim 3 , wherein the Huffman coding process is a static Huffman coding process and the overhead represents a storage size of a Huffman dictionary for the Static Huffman coding process.

5. The method of claim 4 , further comprising generating a compression header for the compressed dataset, the compression header including a four bit field identifying the symbol length in bits, and a 1-bit field identifying a Huffman dictionary type.

6. The method of claim 5 , further comprising generating a network protocol data unit having a protocol data unit header and payload portion, and wherein the payload portion carries the compression header and compressed dataset.

7. The method of claim 2 , wherein the Huffman coding process is an adaptive Huffman coding process and the overhead represents the storage size of Not Yet Transmitted codes for the adaptive Huffman coding process.

8. The method of claim 7 , further comprising generating a compression header for the compressed dataset, the compression header including a four bit field identifying the symbol length in bits, and a 1-bit field identifying the Huffman coding process as an adaptive Huffman coding process.

9. The method of claim 8 , further comprising generating a network protocol data unit having a protocol data unit header and payload portion, and wherein the payload portion carries the compression header and compressed dataset.

10. The method of claim 1 , wherein the Huffman coding process is a static bit-stream compression process.

11. The method of claim 1 , wherein the Huffman coding process is an adaptive bit-stream compression process.

12. The method of claim 1 , wherein the symbol length used in the Huffman coding process is longer than a byte, in bits.

13. The method of claim 1 , wherein the symbol length used in the Huffman coding process is shorter than a byte, in bits.

14. The method of claim 1 , further comprising dividing the dataset into a plurality of pieces, and wherein the steps of defining a symbol length, converting the dataset to a bit stream, and encoding the bit stream, is performed individually on each of the pieces such that the compressed dataset includes several individually compressed pieces of the original dataset.

15. The method of claim 14 , wherein a static Huffman coding process is used on the pieces such that each compressed piece of the original dataset includes its own dictionary.

16. The method of claim 1 , wherein the dataset to be compressed is the payload of a protocol data unit.

17. A network element including a bitstream Huffman encoder, the bitstream Huffman encoder comprising:

a plurality of input buffers to store pieces of data to be individually encoded;

a plurality of processors to individually implement Huffman coding processes to encode the pieces of data stored in the input buffers; and

a plurality of output buffers to store encoded pieces of data generated by the processors;

wherein each of the processors encodes a piece of data by:

assessing a length of the piece of data to be encoded;

defining a symbol length based on the length of the data to be encoded, the symbol length defining a length of symbols to be used in the Huffman coding process being used by the processor to compress the piece of data to be encoded, the symbol length being defied without regard to the number of bits in a byte; and

encoding the data to be encoded using the Huffman coding process by extracting symbols with the defined symbol length from the data to be encoded and outputting Huffman codes corresponding to the extracted symbols to generate a compressed dataset.

18. A network element including a bitstream Huffman encoder, the bitstream Huffman encoder comprising:

a deassembler to break an input dataset into the plurality of pieces of data;

a plurality of input buffers to store pieces of data to be individually encoded;

a plurality of processors to individually implement Huffman coding processes to encode the pieces of data stored in the input buffers; and

a plurality of output buffers to store encoded pieces of data generated by the processors; and

an assembler to assemble the individually encoded pieces into a compressed dataset;

wherein each of the processors encodes a piece of data by assessing a length of the data, using the length to determine a symbol length to be used by the Huffman coding process for that particular piece of data.

19. A network element including a bitstream Huffman decoder, the bitstream Huffman decoder comprising:

a plurality of input buffers to store pieces of data that have been previously individually encoded using separate Huffman encoding processes;

a plurality of processors to individually implement Huffman decoding processes to individually decode the pieces of data stored in the input buffers; and

a plurality of output buffers to store decoded pieces of data generated by the processors;

wherein each of the processors decodes a piece of data by determining from a compression header associated with the individually encoded piece of data a symbol length that was used by the Huffman encoding process to encode that particular piece of data, and then implements a Huffman decoding process to output symbols having the determined symbol length.

20. The network element of claim 19 , further comprising a deassembler to break an input dataset into the pieces of data that have been previously individually encoded, and an assembler to assemble the individually decoded pieces into a decoded dataset.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CLEARINGHOUSE LLC
Reel/Frame 054305/0505 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CLEARINGHOUSE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046485/0644 →
RELEASE (REEL 038041 / FRAME 0001) Recorded Jan 2, 2018
From: JPMORGAN CHASE BANK, N.A.
To: RPX CORPORATION; RPX CLEARINGHOUSE LLC
Reel/Frame 044970/0030 →
SECURITY AGREEMENT Recorded Mar 9, 2016
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038041/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2015
From: ROCKSTAR CONSORTIUM US LP; ROCKSTAR CONSORTIUM LLC; BOCKSTAR TECHNOLOGIES LLC; CONSTELLATION TECHNOLOGIES LLC; MOBILESTAR TECHNOLOGIES LLC; NETSTAR TECHNOLOGIES LLC
To: RPX CLEARINGHOUSE LLC
Reel/Frame 034924/0779 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2014
From: ROCKSTAR BIDCO, LP
To: ROCKSTAR CONSORTIUM US LP
Reel/Frame 032436/0804 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2011
From: NORTEL NETWORKS LIMITED
To: ROCKSTAR BIDCO, LP
Reel/Frame 027164/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2011
From: WANG, PHIL YONGHUI
To: NORTEL NETWORKS LIMITED
Reel/Frame 025683/0590 →