History-Based Byte Stream Compression Without Prefix Table Transfer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing stream-based compression methods are inefficient in reducing bandwidth consumption and improving responsiveness, as they require transmitting prefix tables and have limited accuracy in finding matching byte sequences within a history buffer.

Innovation Solution

The implementation of a real-time history-based byte stream compression system using an elaborate hashing scheme and context-specific prefix codes, where the encoder compresses unmatched data and transmits match length codes, allowing the decoder to mirror prefix code computation and avoid sending prefix tables, thereby reducing the number of bits required for encoding.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If conventional stream-based compression methods are used, then data can be compressed, but prefix tables must be transmitted which increases bandwidth consumption

Engineering Contradiction:
Improvebandwidth consumptionVSAvoidprefix table transmission
Core Design Contradiction:
Loss of energyVSLoss of information

Solution Approach 1:

The decoder mirrors the encoder's prefix code computation process, allowing it to generate the same prefix codes locally without receiving them from the encoder. This self-service approach eliminates the need to transmit prefix tables, resolving the contradiction between bandwidth consumption and information transmission.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The decoder creates a copy of the encoder's computation logic by maintaining identical history buffers and prefix code generation algorithms. This copying of the computational process enables the decoder to independently generate prefix codes, eliminating the need to receive them through the communication channel.

Inventive Principle:
Principle #26Copying

2Productivity

If simple hashing schemes are used for finding matches in history buffer, then computation is faster, but matching accuracy is lower

Engineering Contradiction:
Improvecompression speedVSAvoidbyte sequence matching accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The hashing process is divided into multiple stages: first a quick hash filter identifies potential matches, then subsequent verification stages confirm actual matches. This segmentation allows the system to maintain high speed through the filter while achieving high accuracy through verification, resolving the contradiction between compression speed and matching accuracy.

Inventive Principle:
Principle #1Segmentation

3Loss of energy

If context-specific prefix codes are used for each byte, then compression ratio improves, but the complexity of maintaining multiple prefix code tables increases

Engineering Contradiction:
Improvebandwidth consumptionVSAvoidprefix code table management
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

Both encoder and decoder independently compute context-specific prefix codes using identical algorithms and history buffers. This self-service approach eliminates the need to transmit or synchronize prefix code tables, reducing device complexity while maintaining the compression benefits of context-specific coding.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system dynamically changes prefix code parameters based on context (previous bytes) without requiring separate stored tables for each context. The prefix codes are generated on-the-fly through computation, allowing context-specific optimization without the overhead of maintaining multiple static tables.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11804853B2Real-time history-based byte stream compression
Publication Date: 2023.10.31 CITRIX SYSTEMS INC
  • US11804853B2 patent drawing
  • US11804853B2 patent drawing
  • US11804853B2 patent drawing

AI summary

Systems and methods for stream-based compression are described. One example is an encoder of a first device that receives an input stream of bytes including a first byte preceded by one or more second bytes. The encoder may determine to identify a prefix code for the first byte. The encoder may select a prefix code table using the one or more second bytes. The encoder may identify, from the selected prefix code table, the prefix code of the first byte. The encoder may generate an output stream of bytes by replacing the first byte in the input stream with the prefix code of the first byte. The encoder may transmit the output stream from the encoder of the first device to a decoder of a second device. The output stream may have a fewer number of bits than the input stream.