Home | History | Annotate | Line # | Download | only in compress
clevels.h revision 1.1
      1  1.1  christos /*
      2  1.1  christos  * Copyright (c) Meta Platforms, Inc. and affiliates.
      3  1.1  christos  * All rights reserved.
      4  1.1  christos  *
      5  1.1  christos  * This source code is licensed under both the BSD-style license (found in the
      6  1.1  christos  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
      7  1.1  christos  * in the COPYING file in the root directory of this source tree).
      8  1.1  christos  * You may select, at your option, one of the above-listed licenses.
      9  1.1  christos  */
     10  1.1  christos 
     11  1.1  christos #ifndef ZSTD_CLEVELS_H
     12  1.1  christos #define ZSTD_CLEVELS_H
     13  1.1  christos 
     14  1.1  christos #define ZSTD_STATIC_LINKING_ONLY  /* ZSTD_compressionParameters  */
     15  1.1  christos #include "../zstd.h"
     16  1.1  christos 
     17  1.1  christos /*-=====  Pre-defined compression levels  =====-*/
     18  1.1  christos 
     19  1.1  christos #define ZSTD_MAX_CLEVEL     22
     20  1.1  christos 
     21  1.1  christos #ifdef __GNUC__
     22  1.1  christos __attribute__((__unused__))
     23  1.1  christos #endif
     24  1.1  christos 
     25  1.1  christos static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEVEL+1] = {
     26  1.1  christos {   /* "default" - for any srcSize > 256 KB */
     27  1.1  christos     /* W,  C,  H,  S,  L, TL, strat */
     28  1.1  christos     { 19, 12, 13,  1,  6,  1, ZSTD_fast    },  /* base for negative levels */
     29  1.1  christos     { 19, 13, 14,  1,  7,  0, ZSTD_fast    },  /* level  1 */
     30  1.1  christos     { 20, 15, 16,  1,  6,  0, ZSTD_fast    },  /* level  2 */
     31  1.1  christos     { 21, 16, 17,  1,  5,  0, ZSTD_dfast   },  /* level  3 */
     32  1.1  christos     { 21, 18, 18,  1,  5,  0, ZSTD_dfast   },  /* level  4 */
     33  1.1  christos     { 21, 18, 19,  3,  5,  2, ZSTD_greedy  },  /* level  5 */
     34  1.1  christos     { 21, 18, 19,  3,  5,  4, ZSTD_lazy    },  /* level  6 */
     35  1.1  christos     { 21, 19, 20,  4,  5,  8, ZSTD_lazy    },  /* level  7 */
     36  1.1  christos     { 21, 19, 20,  4,  5, 16, ZSTD_lazy2   },  /* level  8 */
     37  1.1  christos     { 22, 20, 21,  4,  5, 16, ZSTD_lazy2   },  /* level  9 */
     38  1.1  christos     { 22, 21, 22,  5,  5, 16, ZSTD_lazy2   },  /* level 10 */
     39  1.1  christos     { 22, 21, 22,  6,  5, 16, ZSTD_lazy2   },  /* level 11 */
     40  1.1  christos     { 22, 22, 23,  6,  5, 32, ZSTD_lazy2   },  /* level 12 */
     41  1.1  christos     { 22, 22, 22,  4,  5, 32, ZSTD_btlazy2 },  /* level 13 */
     42  1.1  christos     { 22, 22, 23,  5,  5, 32, ZSTD_btlazy2 },  /* level 14 */
     43  1.1  christos     { 22, 23, 23,  6,  5, 32, ZSTD_btlazy2 },  /* level 15 */
     44  1.1  christos     { 22, 22, 22,  5,  5, 48, ZSTD_btopt   },  /* level 16 */
     45  1.1  christos     { 23, 23, 22,  5,  4, 64, ZSTD_btopt   },  /* level 17 */
     46  1.1  christos     { 23, 23, 22,  6,  3, 64, ZSTD_btultra },  /* level 18 */
     47  1.1  christos     { 23, 24, 22,  7,  3,256, ZSTD_btultra2},  /* level 19 */
     48  1.1  christos     { 25, 25, 23,  7,  3,256, ZSTD_btultra2},  /* level 20 */
     49  1.1  christos     { 26, 26, 24,  7,  3,512, ZSTD_btultra2},  /* level 21 */
     50  1.1  christos     { 27, 27, 25,  9,  3,999, ZSTD_btultra2},  /* level 22 */
     51  1.1  christos },
     52  1.1  christos {   /* for srcSize <= 256 KB */
     53  1.1  christos     /* W,  C,  H,  S,  L,  T, strat */
     54  1.1  christos     { 18, 12, 13,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
     55  1.1  christos     { 18, 13, 14,  1,  6,  0, ZSTD_fast    },  /* level  1 */
     56  1.1  christos     { 18, 14, 14,  1,  5,  0, ZSTD_dfast   },  /* level  2 */
     57  1.1  christos     { 18, 16, 16,  1,  4,  0, ZSTD_dfast   },  /* level  3 */
     58  1.1  christos     { 18, 16, 17,  3,  5,  2, ZSTD_greedy  },  /* level  4.*/
     59  1.1  christos     { 18, 17, 18,  5,  5,  2, ZSTD_greedy  },  /* level  5.*/
     60  1.1  christos     { 18, 18, 19,  3,  5,  4, ZSTD_lazy    },  /* level  6.*/
     61  1.1  christos     { 18, 18, 19,  4,  4,  4, ZSTD_lazy    },  /* level  7 */
     62  1.1  christos     { 18, 18, 19,  4,  4,  8, ZSTD_lazy2   },  /* level  8 */
     63  1.1  christos     { 18, 18, 19,  5,  4,  8, ZSTD_lazy2   },  /* level  9 */
     64  1.1  christos     { 18, 18, 19,  6,  4,  8, ZSTD_lazy2   },  /* level 10 */
     65  1.1  christos     { 18, 18, 19,  5,  4, 12, ZSTD_btlazy2 },  /* level 11.*/
     66  1.1  christos     { 18, 19, 19,  7,  4, 12, ZSTD_btlazy2 },  /* level 12.*/
     67  1.1  christos     { 18, 18, 19,  4,  4, 16, ZSTD_btopt   },  /* level 13 */
     68  1.1  christos     { 18, 18, 19,  4,  3, 32, ZSTD_btopt   },  /* level 14.*/
     69  1.1  christos     { 18, 18, 19,  6,  3,128, ZSTD_btopt   },  /* level 15.*/
     70  1.1  christos     { 18, 19, 19,  6,  3,128, ZSTD_btultra },  /* level 16.*/
     71  1.1  christos     { 18, 19, 19,  8,  3,256, ZSTD_btultra },  /* level 17.*/
     72  1.1  christos     { 18, 19, 19,  6,  3,128, ZSTD_btultra2},  /* level 18.*/
     73  1.1  christos     { 18, 19, 19,  8,  3,256, ZSTD_btultra2},  /* level 19.*/
     74  1.1  christos     { 18, 19, 19, 10,  3,512, ZSTD_btultra2},  /* level 20.*/
     75  1.1  christos     { 18, 19, 19, 12,  3,512, ZSTD_btultra2},  /* level 21.*/
     76  1.1  christos     { 18, 19, 19, 13,  3,999, ZSTD_btultra2},  /* level 22.*/
     77  1.1  christos },
     78  1.1  christos {   /* for srcSize <= 128 KB */
     79  1.1  christos     /* W,  C,  H,  S,  L,  T, strat */
     80  1.1  christos     { 17, 12, 12,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
     81  1.1  christos     { 17, 12, 13,  1,  6,  0, ZSTD_fast    },  /* level  1 */
     82  1.1  christos     { 17, 13, 15,  1,  5,  0, ZSTD_fast    },  /* level  2 */
     83  1.1  christos     { 17, 15, 16,  2,  5,  0, ZSTD_dfast   },  /* level  3 */
     84  1.1  christos     { 17, 17, 17,  2,  4,  0, ZSTD_dfast   },  /* level  4 */
     85  1.1  christos     { 17, 16, 17,  3,  4,  2, ZSTD_greedy  },  /* level  5 */
     86  1.1  christos     { 17, 16, 17,  3,  4,  4, ZSTD_lazy    },  /* level  6 */
     87  1.1  christos     { 17, 16, 17,  3,  4,  8, ZSTD_lazy2   },  /* level  7 */
     88  1.1  christos     { 17, 16, 17,  4,  4,  8, ZSTD_lazy2   },  /* level  8 */
     89  1.1  christos     { 17, 16, 17,  5,  4,  8, ZSTD_lazy2   },  /* level  9 */
     90  1.1  christos     { 17, 16, 17,  6,  4,  8, ZSTD_lazy2   },  /* level 10 */
     91  1.1  christos     { 17, 17, 17,  5,  4,  8, ZSTD_btlazy2 },  /* level 11 */
     92  1.1  christos     { 17, 18, 17,  7,  4, 12, ZSTD_btlazy2 },  /* level 12 */
     93  1.1  christos     { 17, 18, 17,  3,  4, 12, ZSTD_btopt   },  /* level 13.*/
     94  1.1  christos     { 17, 18, 17,  4,  3, 32, ZSTD_btopt   },  /* level 14.*/
     95  1.1  christos     { 17, 18, 17,  6,  3,256, ZSTD_btopt   },  /* level 15.*/
     96  1.1  christos     { 17, 18, 17,  6,  3,128, ZSTD_btultra },  /* level 16.*/
     97  1.1  christos     { 17, 18, 17,  8,  3,256, ZSTD_btultra },  /* level 17.*/
     98  1.1  christos     { 17, 18, 17, 10,  3,512, ZSTD_btultra },  /* level 18.*/
     99  1.1  christos     { 17, 18, 17,  5,  3,256, ZSTD_btultra2},  /* level 19.*/
    100  1.1  christos     { 17, 18, 17,  7,  3,512, ZSTD_btultra2},  /* level 20.*/
    101  1.1  christos     { 17, 18, 17,  9,  3,512, ZSTD_btultra2},  /* level 21.*/
    102  1.1  christos     { 17, 18, 17, 11,  3,999, ZSTD_btultra2},  /* level 22.*/
    103  1.1  christos },
    104  1.1  christos {   /* for srcSize <= 16 KB */
    105  1.1  christos     /* W,  C,  H,  S,  L,  T, strat */
    106  1.1  christos     { 14, 12, 13,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
    107  1.1  christos     { 14, 14, 15,  1,  5,  0, ZSTD_fast    },  /* level  1 */
    108  1.1  christos     { 14, 14, 15,  1,  4,  0, ZSTD_fast    },  /* level  2 */
    109  1.1  christos     { 14, 14, 15,  2,  4,  0, ZSTD_dfast   },  /* level  3 */
    110  1.1  christos     { 14, 14, 14,  4,  4,  2, ZSTD_greedy  },  /* level  4 */
    111  1.1  christos     { 14, 14, 14,  3,  4,  4, ZSTD_lazy    },  /* level  5.*/
    112  1.1  christos     { 14, 14, 14,  4,  4,  8, ZSTD_lazy2   },  /* level  6 */
    113  1.1  christos     { 14, 14, 14,  6,  4,  8, ZSTD_lazy2   },  /* level  7 */
    114  1.1  christos     { 14, 14, 14,  8,  4,  8, ZSTD_lazy2   },  /* level  8.*/
    115  1.1  christos     { 14, 15, 14,  5,  4,  8, ZSTD_btlazy2 },  /* level  9.*/
    116  1.1  christos     { 14, 15, 14,  9,  4,  8, ZSTD_btlazy2 },  /* level 10.*/
    117  1.1  christos     { 14, 15, 14,  3,  4, 12, ZSTD_btopt   },  /* level 11.*/
    118  1.1  christos     { 14, 15, 14,  4,  3, 24, ZSTD_btopt   },  /* level 12.*/
    119  1.1  christos     { 14, 15, 14,  5,  3, 32, ZSTD_btultra },  /* level 13.*/
    120  1.1  christos     { 14, 15, 15,  6,  3, 64, ZSTD_btultra },  /* level 14.*/
    121  1.1  christos     { 14, 15, 15,  7,  3,256, ZSTD_btultra },  /* level 15.*/
    122  1.1  christos     { 14, 15, 15,  5,  3, 48, ZSTD_btultra2},  /* level 16.*/
    123  1.1  christos     { 14, 15, 15,  6,  3,128, ZSTD_btultra2},  /* level 17.*/
    124  1.1  christos     { 14, 15, 15,  7,  3,256, ZSTD_btultra2},  /* level 18.*/
    125  1.1  christos     { 14, 15, 15,  8,  3,256, ZSTD_btultra2},  /* level 19.*/
    126  1.1  christos     { 14, 15, 15,  8,  3,512, ZSTD_btultra2},  /* level 20.*/
    127  1.1  christos     { 14, 15, 15,  9,  3,512, ZSTD_btultra2},  /* level 21.*/
    128  1.1  christos     { 14, 15, 15, 10,  3,999, ZSTD_btultra2},  /* level 22.*/
    129  1.1  christos },
    130  1.1  christos };
    131  1.1  christos 
    132  1.1  christos 
    133  1.1  christos 
    134  1.1  christos #endif  /* ZSTD_CLEVELS_H */
    135