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