IP Library Granted Patent US 11,995,039
Granted Patent B2
US 11,995,039 · App. 17/315,676 · Granted May 28, 2024

Partial decompression for rapid file or sub-file access

Inventors: Sean Blanchflower (Cambridge, GB); Brian Cowe (Cambridge, GB); Barnaby Wainwright (Cambridge, GB)
Assignee: LONGSAND LIMITED
G06F16/1744H03M7/3088H03M7/40
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,995,039
App. No.
17/315,676
Granted
May 28, 2024
Kind
B2
Abstract

Embodiments of the present disclosure provide systems and methods for reverse decompression. According to one embodiment of the present disclosure, the method for reverse decompression includes receiving encoded and compressed input data in a form of one or more data blocks and locating an end of block marker for a last block of the one or more data blocks of the input data. The method also includes traversing the input data, bit by bit, in a reverse direction starting from a last bit of the end of block marker of the last block of the one or more data blocks of the input data towards a beginning of the input data, determining if one block of the one or more blocks of the input data can be designated as a valid block, designating the one block as a valid block and decompressing the valid block in a forward direction.

Claims (64)

1. A method for reverse decompression, comprising:

receiving, by a processor, encoded and compressed input data in a form of one or more data blocks;

locating, by the processor, an end of block marker for a last block of the one or more data blocks of the compressed input data;

traversing, by the processor, the compressed input data, bit by bit, in a reverse direction starting from a last bit of the end of block marker of the last block of the one or more data blocks of the compressed input data towards a beginning of the compressed input data;

determining, by the processor, if one block of the one or more blocks of the compressed input data can be designated as a valid block based on a known format for content and a corresponding length of the known format for the content;

designating, by the processor, the one block as a valid block; and

decompressing, by the processor, the valid block in a forward direction

wherein the end of block marker is based on a type of the content of the compressed input data.

2. The method for reverse decompression according to claim 1 , further comprising:

determining, by the processor, that a maximum data block length has been reached after traversing, bit by bit, at least one of the one or more data blocks of the compressed input data;

determining, by the processor, if there is at least one prior designated valid block; and

if there is at least one prior designated valid block, changing, by the processor, a designation about a previous block being a valid block,

wherein the previous block is provided before the at least one prior designated valid block in the forward direction.

3. The method for reverse decompression according to claim 1 , further comprising:

determining, by the processor, that a maximum data block length has been reached after traversing the input data bit by bit;

determining, by the processor, if there is at least one prior designated valid block; and

if there is not at least one prior designated valid block, terminating, by the processor, the method for reverse decompression.

4. The method for reverse decompression according to claim 1 , wherein if one block of the one or more blocks of the input data cannot be designated as a valid block, continuing to traverse, by the processor, the compressed input data, bit by bit, in the reverse direction towards the beginning of the compressed input data.

5. The method for reverse decompression according to claim 1 , wherein the one or more data blocks includes a literal string.

6. The method for reverse decompression according to claim 1 , wherein the one or more data blocks includes a static dictionary for decompressing data compressed using static Huffman tables.

7. The method for reverse decompression according to claim 1 , wherein the one or more data blocks includes a dynamic dictionary for decompressing data compressed using dynamic Huffman tables.

8. The method for reverse decompression according to claim 1 , wherein the reverse decompression is operative in accordance with a Lempel-Ziv type algorithm.

9. A system, comprising:

a processor; and

a memory coupled with and readable by the processor and storing therein a set of instructions which, when executed by the processor, causes the processor to reverse decompress encoded and compressed input data by:

receiving encoded and compressed input data in a form of one or more data blocks;

locating an end of block marker for a last block of the one or more data blocks of the compressed input data;

traversing the compressed input data, bit by bit, in a reverse direction starting from a last bit of the end of block marker of the last block of the one or more data blocks of the compressed input data towards a beginning of the compressed input data;

determining if one block of the one or more blocks of the compressed input data can be designated as a valid block based on a known format for content and a corresponding length of the known format for the content;

designating the one block as a valid block; and

decompressing the valid block in a forward direction,

wherein the end of block marker is based on a type of the content of the compressed input data.

10. The system according to claim 9 , further comprising:

determining that a maximum data block length has been reached after traversing, bit by bit, at least one of the one or more data blocks of the compressed input data;

determining if there is at least one prior designated valid block; and

if there is at least one prior designated valid block, changing a designation about a previous block being a valid block,

wherein the previous block is provided before the at least one prior designated valid block in the forward direction.

11. The system according to claim 9 , further comprising:

determining that a maximum data block length has been reached after traversing the input data bit by bit;

determining if there is at least one prior designated valid block; and

if there is not at least one prior designated valid block, terminating the reverse decompression of the encoded and compressed input data.

12. The system according to claim 9 , wherein if one block of the one or more blocks of the input data cannot be designated as a valid block, continuing to traverse, by the processor, the compressed input data, bit by bit, in the reverse direction towards the beginning of the compressed input data.

13. The system according to claim 9 , wherein the one or more data blocks includes a literal string.

14. The system according to claim 9 , wherein the one or more data blocks includes a static dictionary for decompressing data compressed using static Huffman tables.

15. The system according to claim 9 , wherein the one or more data blocks includes a dynamic dictionary for decompressing data compressed using dynamic Huffman tables.

16. The system according to claim 9 , wherein the reverse decompression is operative in accordance with a Lempel-Ziv type algorithm.

17. A non-transitory, computer-readable medium comprising a set of instructions stored therein which, when executed by a processor, causes the processor to reverse decompress an encoded and compressed input data by:

receiving encoded and compressed input data in a form of one or more data blocks;

locating an end of block marker for a last block of the one or more data blocks of the compressed input data;

traversing the compressed input data, bit by bit, in a reverse direction starting from a last bit of the end of block marker of the last block of the one or more data blocks of the compressed input data towards a beginning of the compressed input data;

determining if one block of the one or more blocks of the compressed input data can be designated as a valid block based on a known format for content and a corresponding length of the known format for the content;

designating the one block as a valid block; and

decompressing the valid block in a forward direction,

wherein the end of block marker is based on a type of the content of the compressed input data.

18. The non-transitory, computer-readable medium according to claim 17 , further comprising:

determining that a maximum data block length has been reached after traversing, bit by bit, at least one of the one or more data blocks of the compressed input data;

determining if there is at least one prior designated valid block; and

if there is at least one prior designated valid block, changing a designation about a previous block being a valid block,

wherein the previous block is provided before that at least one prior designated valid block in the forward direction.

19. The non-transitory, computer-readable medium according to claim 17 , further comprising:

determining, by the processor, that a maximum data block length has been reached after traversing the input data bit by bit;

determining, by the processor, if there is at least one prior designated valid block; and

if there is not at least one prior designated valid block, terminating, by the processor, the reverse decompression.

20. The non-transitory, computer-readable medium according to claim 17 , wherein if one block of the one or more blocks of the input data cannot be designated as a valid block, continuing to traverse, by the processor, the compressed input data, bit by bit, in the reverse direction towards the beginning of the compressed input data.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2024
From: LONGSAND LIMITED
To: MICRO FOCUS IP DEVELOPMENT, LIMITED
Reel/Frame 068283/0188 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2021
From: BLANCHFLOWER, SEAN; COWE, BRIAN; WAINWRIGHT, BARNABY
To: LONGSAND LIMITED
Reel/Frame 057137/0505 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2021
From: BLANCHFLOWER, SEAN; COWE, BRIAN; WAINWRIGHT, BARNABY
To: LONGSAND LIMITED
Reel/Frame 056185/0833 →
Continuity (1)
Related Publication 20220358094A1 · Nov 10, 2022