2017-01-20 22:00:41 +00:00
/**
* Copyright ( c ) 2016 - present , Yann Collet , Facebook , Inc .
* All rights reserved .
*
* This source code is licensed under the BSD - style license found in the
* LICENSE file in the root directory of this source tree . An additional grant
* of patent rights can be found in the PATENTS file in the same directory .
*/
2016-12-27 06:19:36 +00:00
2017-01-28 00:00:19 +00:00
# ifndef ZSTDMT_COMPRESS_H
# define ZSTDMT_COMPRESS_H
# if defined (__cplusplus)
extern " C " {
# endif
2017-01-25 01:02:26 +00:00
/* Note : All prototypes defined in this file shall be considered experimental.
* There is no guarantee of API continuity ( yet ) on any of these prototypes */
2017-01-12 00:25:46 +00:00
/* === Dependencies === */
2016-12-27 06:19:36 +00:00
# include <stddef.h> /* size_t */
2017-01-19 23:32:07 +00:00
# define ZSTD_STATIC_LINKING_ONLY /* ZSTD_parameters */
2017-01-21 01:18:41 +00:00
# include "zstd.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTDLIB_API */
2016-12-27 06:19:36 +00:00
2017-01-12 00:25:46 +00:00
/* === Simple one-pass functions === */
typedef struct ZSTDMT_CCtx_s ZSTDMT_CCtx ;
2017-01-21 01:18:41 +00:00
ZSTDLIB_API ZSTDMT_CCtx * ZSTDMT_createCCtx ( unsigned nbThreads ) ;
ZSTDLIB_API size_t ZSTDMT_freeCCtx ( ZSTDMT_CCtx * cctx ) ;
2016-12-27 06:19:36 +00:00
2017-01-21 01:18:41 +00:00
ZSTDLIB_API size_t ZSTDMT_compressCCtx ( ZSTDMT_CCtx * cctx ,
2016-12-27 06:19:36 +00:00
void * dst , size_t dstCapacity ,
const void * src , size_t srcSize ,
int compressionLevel ) ;
2017-01-12 00:25:46 +00:00
/* === Streaming functions === */
2017-01-25 01:02:26 +00:00
ZSTDLIB_API size_t ZSTDMT_initCStream ( ZSTDMT_CCtx * mtctx , int compressionLevel ) ;
ZSTDLIB_API size_t ZSTDMT_resetCStream ( ZSTDMT_CCtx * mtctx , unsigned long long pledgedSrcSize ) ; /**< pledgedSrcSize is optional and can be zero == unknown */
ZSTDLIB_API size_t ZSTDMT_compressStream ( ZSTDMT_CCtx * mtctx , ZSTD_outBuffer * output , ZSTD_inBuffer * input ) ;
ZSTDLIB_API size_t ZSTDMT_flushStream ( ZSTDMT_CCtx * mtctx , ZSTD_outBuffer * output ) ; /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
ZSTDLIB_API size_t ZSTDMT_endStream ( ZSTDMT_CCtx * mtctx , ZSTD_outBuffer * output ) ; /**< @return : 0 == all flushed; >0 : still some data to be flushed; or an error code (ZSTD_isError()) */
/* === Advanced functions and parameters === */
# ifndef ZSTDMT_SECTION_SIZE_MIN
# define ZSTDMT_SECTION_SIZE_MIN (1U << 20) /* 1 MB - Minimum size of each compression job */
# endif
ZSTDLIB_API size_t ZSTDMT_initCStream_advanced ( ZSTDMT_CCtx * mtctx , const void * dict , size_t dictSize , /**< dict can be released after init, a local copy is preserved within zcs */
ZSTD_parameters params , unsigned long long pledgedSrcSize ) ; /**< pledgedSrcSize is optional and can be zero == unknown */
2017-01-19 23:32:07 +00:00
2017-01-25 01:02:26 +00:00
/* ZSDTMT_parameter :
* List of parameters that can be set using ZSTDMT_setMTCtxParameter ( ) */
2017-01-26 00:39:03 +00:00
typedef enum {
2017-01-26 01:01:13 +00:00
ZSTDMT_p_sectionSize , /* size of input "section". Each section is compressed in parallel. 0 means default, which is dynamically determined within compression functions */
2017-01-30 19:00:00 +00:00
ZSTDMT_p_overlapSectionLog /* Log of overlapped section; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */
2017-01-26 00:39:03 +00:00
} ZSDTMT_parameter ;
2017-01-19 23:32:07 +00:00
2017-01-25 01:02:26 +00:00
/* ZSTDMT_setMTCtxParameter() :
* allow setting individual parameters , one at a time , among a list of enums defined in ZSTDMT_parameter .
* The function must be called typically after ZSTD_createCCtx ( ) .
* Parameters not explicitly reset by ZSTDMT_init * ( ) remain the same in consecutive compression sessions .
* @ return : 0 , or an error code ( which can be tested using ZSTD_isError ( ) ) */
2017-01-25 06:32:12 +00:00
ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter ( ZSTDMT_CCtx * mtctx , ZSDTMT_parameter parameter , unsigned value ) ;
2017-01-28 00:00:19 +00:00
# if defined (__cplusplus)
}
# endif
# endif /* ZSTDMT_COMPRESS_H */