contrib/python-zstandard/zstd/compress/zstdmt_compress.h
changeset 30924 c32454d69b85
child 37495 b1fb341d8a61
equal deleted inserted replaced
30923:5b60464efbde 30924:c32454d69b85
       
     1 /**
       
     2  * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
       
     3  * All rights reserved.
       
     4  *
       
     5  * This source code is licensed under the BSD-style license found in the
       
     6  * LICENSE file in the root directory of this source tree. An additional grant
       
     7  * of patent rights can be found in the PATENTS file in the same directory.
       
     8  */
       
     9 
       
    10  #ifndef ZSTDMT_COMPRESS_H
       
    11  #define ZSTDMT_COMPRESS_H
       
    12 
       
    13  #if defined (__cplusplus)
       
    14  extern "C" {
       
    15  #endif
       
    16 
       
    17 
       
    18 /* Note : All prototypes defined in this file shall be considered experimental.
       
    19  *        There is no guarantee of API continuity (yet) on any of these prototypes */
       
    20 
       
    21 /* ===   Dependencies   === */
       
    22 #include <stddef.h>   /* size_t */
       
    23 #define ZSTD_STATIC_LINKING_ONLY   /* ZSTD_parameters */
       
    24 #include "zstd.h"     /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTDLIB_API */
       
    25 
       
    26 
       
    27 /* ===   Simple one-pass functions   === */
       
    28 
       
    29 typedef struct ZSTDMT_CCtx_s ZSTDMT_CCtx;
       
    30 ZSTDLIB_API ZSTDMT_CCtx* ZSTDMT_createCCtx(unsigned nbThreads);
       
    31 ZSTDLIB_API size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* cctx);
       
    32 
       
    33 ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* cctx,
       
    34                            void* dst, size_t dstCapacity,
       
    35                      const void* src, size_t srcSize,
       
    36                            int compressionLevel);
       
    37 
       
    38 
       
    39 /* ===   Streaming functions   === */
       
    40 
       
    41 ZSTDLIB_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel);
       
    42 ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize);    /**< pledgedSrcSize is optional and can be zero == unknown */
       
    43 
       
    44 ZSTDLIB_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
       
    45 
       
    46 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()) */
       
    47 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()) */
       
    48 
       
    49 
       
    50 /* ===   Advanced functions and parameters  === */
       
    51 
       
    52 #ifndef ZSTDMT_SECTION_SIZE_MIN
       
    53 #  define ZSTDMT_SECTION_SIZE_MIN (1U << 20)   /* 1 MB - Minimum size of each compression job */
       
    54 #endif
       
    55 
       
    56 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 */
       
    57                                           ZSTD_parameters params, unsigned long long pledgedSrcSize);  /**< pledgedSrcSize is optional and can be zero == unknown */
       
    58 
       
    59 /* ZSDTMT_parameter :
       
    60  * List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
       
    61 typedef enum {
       
    62     ZSTDMT_p_sectionSize,        /* size of input "section". Each section is compressed in parallel. 0 means default, which is dynamically determined within compression functions */
       
    63     ZSTDMT_p_overlapSectionLog   /* Log of overlapped section; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */
       
    64 } ZSDTMT_parameter;
       
    65 
       
    66 /* ZSTDMT_setMTCtxParameter() :
       
    67  * allow setting individual parameters, one at a time, among a list of enums defined in ZSTDMT_parameter.
       
    68  * The function must be called typically after ZSTD_createCCtx().
       
    69  * Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
       
    70  * @return : 0, or an error code (which can be tested using ZSTD_isError()) */
       
    71 ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter, unsigned value);
       
    72 
       
    73 
       
    74 #if defined (__cplusplus)
       
    75 }
       
    76 #endif
       
    77 
       
    78 #endif   /* ZSTDMT_COMPRESS_H */