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