IP Library Granted Patent US 11,025,272
Granted Patent B2
US 11,025,272 · App. 16/867,859 · Granted Jun 1, 2021

Real-time history-based byte stream compression

Inventor: Muhammad Dawood (High Wycombe, GB)
Assignee: Citrix Systems, Inc.
H03M7/42H03M7/3084
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 11,025,272
App. No.
16/867,859
Granted
Jun 1, 2021
Kind
B2
Abstract

Systems and methods for stream-based compression include an encoder of a first device that may receive 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.

Claims (56)

1. A method, comprising:

receiving, by a first computing system, a plurality of bytes of an input stream;

determining, by the first computing system, that a target byte in the input stream is to be encoded with a prefix code;

identifying, by the first computing system, at least a first contextual byte that occupies a particular position relative to the target byte in the input stream;

selecting, by the first computing system, a first prefix code table from among a plurality of prefix code tables based at least in part on the first contextual byte that occupies the particular position, the plurality of prefix code tables including at least the first prefix code table and a second prefix code table, wherein the first prefix code table includes a first prefix code for the target byte and the second prefix code table includes a second prefix code for the target byte, the first prefix code including a different number of bits than the second prefix code; and

using, by the first computing system, the first prefix code from the first prefix code table to encode the target byte in the plurality of bytes to reduce a number of bits of the input stream for transmission as an output stream.

2. The method of claim 1 , further comprising:

transmitting, by the first computing system, the output stream to a second computing system.

3. The method of claim 1 , further comprising:

replacing, by the first computing system, the target byte with the first prefix code.

4. The method of claim 1 , further comprising:

generating, by the first computing system, the output stream to comprise the target byte replaced by the first prefix code.

5. The method of claim 1 , wherein selecting the first prefix code table from among the plurality of prefix code tables comprises determining that the first prefix code table is indexed by the first contextual byte.

6. The method of claim 1 , wherein:

the first prefix code includes a first number of bits corresponding to a first likelihood of the target byte occupying the particular position relative to the first contextual byte; and

the second prefix code includes a second number of bits corresponding to a second likelihood of the target byte occupying the particular position relative to a different contextual byte.

7. The method of claim 1 , wherein:

the plurality of prefix code tables comprises different prefix code tables for respective contextual bytes that could possibly occupy the particular position relative to the target byte.

8. A first computing system, comprising:

at least one processor; and

at least one computer readable medium encoded with instructions which, when executed by the at least one processor, cause the first computing system to:

receive a plurality of bytes of an input stream,

determine that a target byte in the input stream is to be encoded with a prefix code,

identify at least a first contextual byte that occupies a particular position relative to the target byte in the input stream,

select a first prefix code table from among a plurality of prefix code tables based at least in part on the first contextual byte that occupies the particular position, the plurality of prefix code tables including at least the first prefix code table and a second prefix code table, wherein the first prefix code table includes a first prefix code for the target byte and the second prefix code table includes a second prefix code for the target byte, the first prefix code including a different number of bits than the second prefix code, and

use the first prefix code from the first prefix code table to encode the target byte in the plurality of bytes to reduce a number of bits of the input stream for transmission as an output stream.

9. The first computing system of claim 8 , wherein the at least one computer readable medium is further encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

transmit the output stream to a second computing system.

10. The first computing system of claim 8 , wherein the at least one computer readable medium is further encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

replace target byte with the first prefix code.

11. The first computing system of claim 8 , wherein the at least one computer readable medium is further encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

generate the output stream to comprise the target byte replaced by the first prefix code.

12. The first computing system of claim 8 , wherein the at least one computer readable medium is further encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

select the first prefix code table from among the plurality of prefix code tables at least in part by determining that the first prefix code table is indexed by the first contextual byte.

13. The first computing system of claim 8 , wherein:

the first prefix code includes a first number of bits corresponding to a first likelihood of the target byte occupying the particular position relative to the first contextual byte; and

the second prefix code includes a second number of bits corresponding to a second likelihood of the target byte occupying the particular position relative to a different contextual byte.

14. The first computing system of claim 8 , wherein:

the plurality of prefix code tables comprises different prefix code tables for respective contextual bytes that could possibly occupy the particular position relative to the target byte.

15. At least one non-transitory computer readable medium encoded with instructions which, when executed by at least one processor of a first computing system, cause the first computing system to:

receive a plurality of bytes of an input stream;

determine that a target byte in the input stream is to be encoded with a prefix code;

identify at least a first contextual byte that occupies a particular position relative to the target byte in the input stream;

select a first prefix code table from among a plurality of prefix code tables based at least in part on first contextual byte that occupies the particular position, the plurality of prefix code tables including at least the first prefix code table and a second prefix code table, wherein the first prefix code table includes a first prefix code for the target byte and the second prefix code table includes a second prefix code for the target byte, the first prefix code including a different number of bits than the second prefix code; and

use the prefix code to encode the target byte in the plurality of bytes to reduce a number of bits of the input stream for transmission as an output stream.

16. The at least one non-transitory computer readable medium of claim 15 , encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

transmit the output stream to a second computing system.

17. The at least one non-transitory computer readable medium of claim of claim 15 , wherein:

the first prefix code includes a first number of bits corresponding to a first likelihood of the target byte occupying the particular position relative to the first contextual byte; and

the second prefix code includes a second number of bits corresponding to a second likelihood of the target byte occupying the particular position relative to a different contextual byte.

18. The at least one non-transitory computer readable medium of claim 15 , encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

generate the output stream to comprise the target byte replaced by the first prefix code.

19. The at least one non-transitory computer readable medium of claim 15 , encoded with additional instructions which, when executed by the at least one processor, further cause the first computing system to:

select the first prefix code table from among the plurality of prefix code tables at least in part by determining that the first prefix code table is indexed by the first contextual byte.

20. The at least one non-transitory computer readable medium of claim of claim 15 , wherein:

the plurality of prefix code tables comprises different prefix code tables for respective contextual bytes that could possibly occupy the particular position relative to the target byte.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2020
From: DAWOOD, MUHAMMAD
To: CITRIX SYSTEMS, INC.
Reel/Frame 052589/0312 →
Continuity (2)
Continuation 16507739 · Jul 10, 2019
Related Publication 20210013900A1 · Jan 14, 2021
Cited By (1)
US 12,526,145