free(ctxBody.workSpace); /* can't free ctxBody, since it's on stack; free heap content */
return result;
}
+
+size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx,
+ void* dst, size_t maxDstSize,
+ const void* src, size_t srcSize,
+ const void* dict, size_t dictSize,
+ int compressionLevel)
+{
+ BYTE* const ostart = (BYTE*)dst;
+ BYTE* op = ostart;
+ size_t oSize;
+
+ /* Header */
+ oSize = ZSTD_compressBegin_advanced(ctx, dst, maxDstSize, ZSTD_getParams(compressionLevel, srcSize+dictSize));
+ if (ZSTD_isError(oSize)) return oSize;
+ op += oSize;
+ maxDstSize -= oSize;
+
+ if (dict)
+ {
+ oSize = ZSTD_compress_insertDictionary(ctx, dict, dictSize);
+ if (ZSTD_isError(oSize)) return oSize;
+ }
+
+ /* body (compression) */
+ oSize = ZSTD_compressContinue(ctx, op, maxDstSize, src, srcSize);
+ if (ZSTD_isError(oSize)) return oSize;
+ op += oSize;
+ maxDstSize -= oSize;
+
+ /* Close frame */
+ oSize = ZSTD_compressEnd(ctx, op, maxDstSize);
+ if (ZSTD_isError(oSize)) return oSize;
+ op += oSize;
+
+ return (op - ostart);
+}
+
+
const void* src, size_t srcSize,
ZSTD_parameters params);
+/** ZSTD_compress_usingDict
+* Same as ZSTD_compressCCtx(), using a Dictionary content as prefix */
+ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx,
+ void* dst, size_t maxDstSize,
+ const void* src, size_t srcSize,
+ const void* dict,size_t dictSize,
+ int compressionLevel);
+
/* **************************************
-* Streaming functions (bufferless mode)
+* Streaming functions (direct mode)
****************************************/
ZSTDLIB_API size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, void* dst, size_t maxDstSize, int compressionLevel);
ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* ctx, void* dst, size_t maxDstSize, ZSTD_parameters params);
size_t resSize;
} blockParam_t;
-typedef size_t (*compressor_t) (void* dst, size_t maxDstSize, const void* src, size_t srcSize, int compressionLevel);
-
#define MIN(a,b) ((a)<(b) ? (a) : (b))
static int BMK_benchMem(const void* srcBuffer, size_t srcSize,
const size_t maxCompressedSize = ZSTD_compressBound(srcSize) + (maxNbBlocks * 1024); /* add some room for safety */
void* const compressedBuffer = malloc(maxCompressedSize);
void* const resultBuffer = malloc(srcSize);
- const compressor_t compressor = ZSTD_compress;
U64 crcOrig = XXH64(srcBuffer, srcSize, 0);
U32 nbBlocks = 0;
while (BMK_GetMilliSpan(milliTime) < TIMELOOP)
{
for (blockNb=0; blockNb<nbBlocks; blockNb++)
- blockTable[blockNb].cSize = compressor(blockTable[blockNb].cPtr, blockTable[blockNb].cRoom, blockTable[blockNb].srcPtr,blockTable[blockNb].srcSize, cLevel);
+ blockTable[blockNb].cSize = ZSTD_compress(blockTable[blockNb].cPtr, blockTable[blockNb].cRoom, blockTable[blockNb].srcPtr,blockTable[blockNb].srcSize, cLevel);
nbLoops++;
}
milliTime = BMK_GetMilliSpan(milliTime);
}
-int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles, unsigned cLevel)
+int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles, int cLevel)
{
double compressibility = (double)g_compressibilityDefault / 100;
/* Main function */
-int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles, unsigned cLevel);
+int BMK_benchFiles(const char** fileNamesTable, unsigned nbFiles, int cLevel);
/* Set Parameters */
void BMK_SetNbIterations(int nbLoops);