pub struct Sequence {
pub ll: u32,
pub ml: u32,
pub of: u32,
}
Expand description
A sequence represents potentially redundant data, and it can be broken up into 2 steps:
- A copy step, where data is copied from the literals section to the decompressed output
- A match copy step that copies data from within the previously decompressed output.
https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#sequence-execution
Fields§
§ll: u32
Literal length, or the number of bytes to be copied from the literals section in the copy step.
ml: u32
The length of the match to make during the match copy step.
of: u32
How far back to go in the decompressed data to read from the match copy step.
If this value is greater than 3, then the offset is of -3
. If of
is from 1-3,
then it has special handling:
The first 3 values define 3 different repeated offsets, with 1 referring to the most recent, 2 the second recent, and so on. When the current sequence has a literal length of 0, then the repeated offsets are shifted by 1. So an offset value of 1 refers to 2, 2 refers to 3, and 3 refers to the most recent offset minus one. If that value is equal to zero, the data is considered corrupted.