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