Canonical Huffman Decoding With Limited Code Lengths

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data compression methods using Huffman codes face inefficiencies in decoding speed and memory usage, particularly in hardware implementations, due to the need for branching trees and memory lookups, which can limit the bit length of symbol codes and increase memory requirements.

Innovation Solution

A hardware module and method for decoding Huffman-based data streams that limits the maximum length of symbol codes, employs a canonical Huffman tree structure, and uses an escape code to aggregate less frequent symbols, allowing for faster decoding and more compact memory representation by treating trailing spaces as a separate symbol and representing the code tree shape efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional Huffman decoding with branching trees and memory lookups is used, then compression efficiency is maintained, but decoding speed decreases and memory usage increases

Engineering Contradiction:
Improvedecoding speedVSAvoidmemory requirements
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the Huffman decoding process into fixed-length code units (e.g., 8-bit or 16-bit blocks) rather than processing variable-length codes through traditional branching trees. Each segment is decoded independently using simple lookup tables, enabling parallel processing and reducing memory access complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent uses compact representation of the Huffman code tree structure by storing only essential tree shape information and code length data rather than complete branching trees. This creates a simplified copy of the decoding information that requires less memory while maintaining decoding accuracy.

Inventive Principle:
Principle #26Copying

2Loss of substance

If variable length symbol codes are used in Huffman coding, then compression efficiency is improved, but decoding complexity and memory usage increase

Engineering Contradiction:
Improvedata compression ratioVSAvoiddecoding structure complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

The patent changes the parameter of code representation from variable-length symbolic codes to fixed-length numerical blocks. By encoding Huffman codes as fixed-length binary blocks with explicit length metadata, the system maintains the compression benefits of variable-length encoding while simplifying the decoding structure to use straightforward block processing and lookup operations.

Inventive Principle:
Principle #35Parameter changes

3Speed

If maximum code length is limited for hardware implementation, then decoding speed improves, but compression efficiency may be reduced

Engineering Contradiction:
Improvedecoding speedVSAvoidcompression efficiency
Core Design Contradiction:
SpeedVSLoss of substance

Solution Approach 1:

The patent implements dynamic block size selection where the fixed-length code block size (e.g., 8-bit, 16-bit) can be adjusted based on the specific Huffman code tree being used and the data characteristics. This allows optimization for both speed (larger blocks) and compression efficiency (smaller blocks when needed), providing flexibility to balance the trade-off according to specific application requirements.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8988257B2Data compression utilizing variable and limited length codes
Publication Date: 2015.03.24 BEIJING ZITIAO NETWORK TECH CO LTD
  • US8988257B2 patent drawing
  • US8988257B2 patent drawing
  • US8988257B2 patent drawing

AI summary

According to one embodiment, method for decoding encoded data comprises a hardware module including circuitry to process a data stream. The data stream includes one or more encoded symbols each including a code assigned to a corresponding symbol. A set of least frequently occurring symbols are assigned a common code to encode those symbols within the data stream. Data blocks are generated each containing a data stream portion. One or more encoded symbols within each data block are identified by comparing data block portions to maximum code values for corresponding code lengths to determine a code length for each data block portion. A starting location for the identified encoded symbols within each data block is determined based on the determined code lengths.