diff options
| author | Juan Linietsky | 2017-06-11 18:41:56 -0300 |
|---|---|---|
| committer | GitHub | 2017-06-11 18:41:56 -0300 |
| commit | 12b2652ecbe4acfe1a0391b162629cb2a86c1a0b (patch) | |
| tree | 75d6a21525b8e75fe56b099465f62e2c77772831 /core/io/compression.cpp | |
| parent | 61c82f4356624c175378fd7a3640b37348f66359 (diff) | |
| parent | f177c1534757973063f244450df063def879d7db (diff) | |
| download | godot-12b2652ecbe4acfe1a0391b162629cb2a86c1a0b.tar.gz godot-12b2652ecbe4acfe1a0391b162629cb2a86c1a0b.tar.zst godot-12b2652ecbe4acfe1a0391b162629cb2a86c1a0b.zip | |
Diffstat (limited to 'core/io/compression.cpp')
| -rw-r--r-- | core/io/compression.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/io/compression.cpp b/core/io/compression.cpp index 662411a62..9c3e0e8ec 100644 --- a/core/io/compression.cpp +++ b/core/io/compression.cpp @@ -33,9 +33,12 @@ #include "zip_io.h" #include "thirdparty/misc/fastlz.h" +#include "thirdparty/zstd/zstd.h" #include <zlib.h> +#define ZSTD_DEFAULT_COMPRESSION 3 + int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, Mode p_mode) { switch (p_mode) { @@ -76,6 +79,11 @@ int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, return aout; } break; + case MODE_ZSTD: { + + int max_dst_size = get_max_compressed_buffer_size(p_src_size, MODE_ZSTD); + return ZSTD_compress(p_dst, max_dst_size, p_src, p_src_size, ZSTD_DEFAULT_COMPRESSION); + } break; } ERR_FAIL_V(-1); @@ -105,6 +113,10 @@ int Compression::get_max_compressed_buffer_size(int p_src_size, Mode p_mode) { deflateEnd(&strm); return aout; } break; + case MODE_ZSTD: { + + return ZSTD_compressBound(p_src_size); + } break; } ERR_FAIL_V(-1); @@ -148,6 +160,10 @@ int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p ERR_FAIL_COND_V(err != Z_STREAM_END, -1); return total; } break; + case MODE_ZSTD: { + + return ZSTD_decompress(p_dst, p_dst_max_size, p_src, p_src_size); + } break; } ERR_FAIL_V(-1); |
