Variable Copy-Pointer Encoding for Better Data Compression
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current data compression techniques, such as SLDC, face limitations in achieving optimal compression ratios due to inefficiencies in encoding consecutive data units and displacement counts, leading to suboptimal output data streams.
Innovation Solution
The implementation of variable length code tables, specifically Huffman coding, to generate copy pointer and literal data symbols, where the encoding scheme is determined based on relative displacement counts and match counts, optimizing the representation of consecutive data units in the compressed output.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If fixed-length encoding is used for displacement counts and match counts, then the encoding scheme is simple and easy to implement, but the compression ratio is suboptimal due to inefficient bit representation
Solution Approach 1:
The patent applies dynamic encoding by using variable-length code tables instead of fixed-length encoding. The code tables are adapted based on the actual data characteristics, specifically using different encoding schemes for different ranges of displacement counts and match counts. This allows the encoding to dynamically adjust to the data distribution, achieving better compression ratios while maintaining implementation feasibility through pre-defined code tables.
Solution Approach 2:
The patent changes the encoding parameters by implementing variable-length codes for displacement counts and match counts. Instead of using a uniform fixed number of bits, the system uses different bit lengths depending on the value range and frequency of occurrence. This parameter change optimizes the average code length and improves compression efficiency without significantly complicating the implementation.
2Loss of substance
If variable length code tables are used to optimize compression, then the compression efficiency improves, but the device complexity increases due to multiple code tables and range determinations
Solution Approach 1:
The patent segments the encoding space by dividing displacement counts and match counts into different ranges, each with its own code table. This segmentation allows the system to use simpler code tables for each segment while collectively achieving optimal compression. The segmentation is implemented through range-based classification, which organizes the complexity into manageable pieces.
Solution Approach 2:
The patent performs preliminary action by pre-defining multiple code tables for different ranges of values before the actual compression process. These code tables are prepared in advance based on statistical analysis of typical data distributions. During compression, the system only needs to determine which range the current value falls into and select the corresponding pre-prepared code table, avoiding the need for complex real-time optimization.
3Ease of operation
If uniform encoding is used for all data symbols, then the implementation is straightforward, but the compression is suboptimal for different types of consecutive data units
Solution Approach 1:
The patent applies local quality by using different encoding strategies for different local characteristics of the data. Specifically, it uses different code tables for different ranges of displacement counts and match counts, and potentially different schemes for literal data symbols versus copy pointer symbols. This local differentiation allows each part of the data to be encoded with the most appropriate scheme for its specific characteristics, improving overall compression while keeping each local encoding rule relatively simple.
Data Source
AI summary
Provided are a computer program product, system, method, and data structure for compressing an input data stream. A determination is made of consecutive data units in the input data stream that match consecutive data units in a history buffer. A copy pointer symbol indicates a copy pointer symbol referencing previously received data units in the history buffer. A determination is made of a relative displacement count in the history buffer at which the number of matching consecutive data units start. A determination is made of a range of relative displacement counts comprising one of a plurality of ranges of displacement counts including the determined relative displacement count. A determination is made of the encoding scheme associated with the determined range. An encoding of the relative displacement count is determined from the determined encoding scheme. The determined encoding of the relative displacement count is indicated in the copy pointer.


