Tim Schumacher
a01968ee6d
LibCompress: Handle arbitrarily long FF-chains in the LZMA encoder
2023-05-19 23:40:33 +02:00
Tim Schumacher
cb93186350
LibCompress: Add debug logging for handling LZMA direct bits
2023-05-19 23:40:33 +02:00
Tim Schumacher
df071d8a76
LibCompress: Add a lot of debug logging to LZMA
2023-05-17 09:08:53 +02:00
Tim Schumacher
85a54cc796
LibCompress: Add an LZMA encoder
2023-05-17 09:08:53 +02:00
Tim Schumacher
9ab3646bc7
LibCompress: Use the variable for LZMA "normalized to real distance"
...
The variable already existed, but I forgot to use it earlier.
2023-05-17 09:08:53 +02:00
Tim Schumacher
42514c6961
LibCompress: Decode the LZMA match type in a separate function
...
This should keep the `read_some` function a bit flatter and shorter, and
make it easier to match the match type decoding process with the
specification.
2023-05-17 09:08:53 +02:00
Tim Schumacher
4a37bac374
LibCompress: Make LzmaHeader a POD-like type
...
This allows us to initialize the struct using an aggregate initializer.
2023-05-17 09:08:53 +02:00
Tim Schumacher
440d8f908f
LibCompress: Extract the LZMA state to a separate class
...
We will also need this in the compressor, as it needs to do the exact
same calculations in reverse.
2023-05-17 09:08:53 +02:00
Tim Schumacher
7000ccf89f
LibCompress: Copy LZMA repetitions from the buffer in sequence
...
This improves the decompression time of `clang-15.0.7.src.tar.xz` from
5.2 seconds down to about 2.7 seconds.
2023-04-05 07:30:38 -04:00
Tim Schumacher
fe761a4e9b
LibCompress: Use LZMA context from preexisting dictionary
2023-03-30 14:39:31 +02:00
Tim Schumacher
023c64011c
LibCompress: Use the correct LZMA repetition offset in all cases
2023-03-30 14:39:31 +02:00
Tim Schumacher
d9627503a9
LibCompress: Reduce repeated code in the LZMA decompressor
2023-03-30 14:39:31 +02:00
Tim Schumacher
8ff36e5910
LibCompress: Implement proper handling of LZMA end-of-stream markers
2023-03-30 08:45:35 +02:00
Tim Schumacher
b6f3b2f116
LibCompress: Move common LZMA end-of-file checks into helper functions
2023-03-30 08:45:35 +02:00
Tim Schumacher
1b8318ab67
LibCompress: Allow providing an external dictionary for LZMA
...
While at it, rename the former "output buffer" to "dictionary", since
that's its primary function.
2023-03-21 10:25:13 +01:00
Tim Schumacher
f4506a3a72
LibCompress: Allow appending input streams to an existing LZMA decoder
2023-03-21 10:25:13 +01:00
Tim Schumacher
04f69de7f1
LibCompress: Refactor LZMA model property decoding into a static helper
2023-03-21 10:25:13 +01:00
Tim Schumacher
b3a9729e23
LibCompress: Add support for LZMA streams
2023-03-20 12:15:38 +02:00