]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Changed ZSTD_compressBound()
authorYann Collet <cyan@fb.com>
Sat, 1 Apr 2017 00:11:38 +0000 (17:11 -0700)
committerYann Collet <cyan@fb.com>
Sat, 1 Apr 2017 00:11:38 +0000 (17:11 -0700)
required so that if Total = A+B
compressBound(Total) <= compressBound(A) + compressBound(B)
under condition of a minimum size for A and B

Will help for ZSTDMT_compress() memory allocation

lib/compress/zstd_compress.c

index c31f8db9187d95945dcfabffa4e49fbd4ada7794..cc69f11849537aae5c748adf534f9085c89e1440 100644 (file)
@@ -32,7 +32,10 @@ typedef enum { ZSTDcs_created=0, ZSTDcs_init, ZSTDcs_ongoing, ZSTDcs_ending } ZS
 *  Helper functions
 ***************************************/
 #define ZSTD_STATIC_ASSERT(c) { enum { ZSTD_static_assert = 1/(int)(!!(c)) }; }
-size_t ZSTD_compressBound(size_t srcSize) { return FSE_compressBound(srcSize) + 12; }
+size_t ZSTD_compressBound(size_t srcSize) {
+    size_t const margin = (srcSize < 512 KB) ? 16 : 0;
+    return srcSize + (srcSize >> 8) + margin;
+}
 
 
 /*-*************************************