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