5efc38b8a1
COMPRESSION, IO: Implement data filters for better compression.
...
This commit implements two data filters:
1) "shuffle" - reorganizes bytes to group most to less significant parts
together: |a1|a2|a3|b1|b2|b3| -> |a1|b1|c1|a2|b2|c2|a3|b3|c3|
2) "bytedelta" - additionally stores differences between subsequent
values: |a1|a2|a3|b1|b2|b3| -> |a1|b1-a1|c1-b1|a2|b2-a2|c2-b2|a3|b3-a3|c3-b3|
For large datasets, in particular in 3D, the compression ratio can be
significantly better after applying these filters.
Inspired by https://aras-p.info/blog/2023/03/01/Float-Compression-7-More-Filtering-Optimization/
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2023-07-27 18:35:54 -03:00
81de98d9e2
Update the copyright year to 2023.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2023-02-01 18:36:37 -03:00
9829505650
Update copyright year to 2022.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2022-02-02 09:51:41 -03:00
09cbb1b812
COMPRESSION: Declare explicit kind in lz4_iserror() and zstd_iserror().
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-12-03 10:25:21 -03:00
1fd1ee7602
IO: Add compression suffix to files individually.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-29 12:23:26 -03:00
b10b49c8c3
COMPRESSION: Add compression_suffix to store the file extension.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-29 12:08:42 -03:00
de81332cf8
COMPRESSION: Reset clen in case the compression is unsupported.
...
This will indicate that no compression should be used.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-29 08:27:21 -03:00
88cdf23078
COMPRESSION, IO: Remove double buffer for compression.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-28 23:27:03 -03:00
e4ffa62714
COMPRESSION: Add function to determine the compression buffer size.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-28 22:32:51 -03:00
e6fc8e5d24
COMPRESSION: Pass the input length to compress().
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-28 22:19:50 -03:00
20282539f9
COMPRESSION: Use ENUM to enumerate compression formats.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-28 09:59:20 -03:00
2d7a4b0d3c
COMPRESSION: Remove unnecessary comments.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-11-19 13:13:43 -03:00
fa8cfa8f8f
COMPRESSION: Remove the 2GiB limit in compress().
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-02-04 17:40:17 -03:00
3d16d5c13d
Update copyrights.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2021-02-04 17:35:04 -03:00
e23f97bbd6
COMPRESSION: Remove long lines.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-24 22:15:54 -03:00
945e627199
COMPRESSION, IO: Replace sizeof() with size() and transfer().
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-22 20:29:43 -03:00
77122f8854
COMPRESSION: Implement compression level for LZ4 compression.
...
Also increase the compression buffer and turn on internal checksum.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-18 18:01:12 -03:00
ec8683a7a0
COMPRESSION: Add CRC64 check to LZMA compression.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-18 17:58:10 -03:00
d048159798
COMPRESSION: Add LZMA/XZ compression format.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-13 15:42:07 -03:00
f9b6dd47e9
COMPRESSION: Use LZ4 frame for compatibility with command lz4.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-13 09:17:09 -03:00
b05f186765
COMPRESSION: Use allocated buffer for ZSTD compression.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-11 15:36:20 -03:00
eb7c8dbd76
COMPRESSION, PYTHON: Add support for LZ4 compression.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-11 15:28:20 -03:00
af4da9444a
IO: Store compression format in binary file attributes.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-11 12:00:42 -03:00
053392e762
COMPRESSION: Add Zstandard compression support.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-10 16:48:31 -03:00
08b7e81f6a
COMPRESSION, IO: Initialize compression in initialize_io().
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-10 15:34:20 -03:00
ab3b5d6877
COMPRESSION: Add module to handle data compression.
...
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
2020-08-10 15:12:40 -03:00