162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright (c) Yann Collet, Facebook, Inc. 362306a36Sopenharmony_ci * All rights reserved. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * This source code is licensed under both the BSD-style license (found in the 662306a36Sopenharmony_ci * LICENSE file in the root directory of this source tree) and the GPLv2 (found 762306a36Sopenharmony_ci * in the COPYING file in the root directory of this source tree). 862306a36Sopenharmony_ci * You may select, at your option, one of the above-listed licenses. 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#ifndef ZSTD_CLEVELS_H 1262306a36Sopenharmony_ci#define ZSTD_CLEVELS_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_compressionParameters */ 1562306a36Sopenharmony_ci#include <linux/zstd.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/*-===== Pre-defined compression levels =====-*/ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define ZSTD_MAX_CLEVEL 22 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci__attribute__((__unused__)) 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistatic const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEVEL+1] = { 2462306a36Sopenharmony_ci{ /* "default" - for any srcSize > 256 KB */ 2562306a36Sopenharmony_ci /* W, C, H, S, L, TL, strat */ 2662306a36Sopenharmony_ci { 19, 12, 13, 1, 6, 1, ZSTD_fast }, /* base for negative levels */ 2762306a36Sopenharmony_ci { 19, 13, 14, 1, 7, 0, ZSTD_fast }, /* level 1 */ 2862306a36Sopenharmony_ci { 20, 15, 16, 1, 6, 0, ZSTD_fast }, /* level 2 */ 2962306a36Sopenharmony_ci { 21, 16, 17, 1, 5, 0, ZSTD_dfast }, /* level 3 */ 3062306a36Sopenharmony_ci { 21, 18, 18, 1, 5, 0, ZSTD_dfast }, /* level 4 */ 3162306a36Sopenharmony_ci { 21, 18, 19, 3, 5, 2, ZSTD_greedy }, /* level 5 */ 3262306a36Sopenharmony_ci { 21, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6 */ 3362306a36Sopenharmony_ci { 21, 19, 20, 4, 5, 8, ZSTD_lazy }, /* level 7 */ 3462306a36Sopenharmony_ci { 21, 19, 20, 4, 5, 16, ZSTD_lazy2 }, /* level 8 */ 3562306a36Sopenharmony_ci { 22, 20, 21, 4, 5, 16, ZSTD_lazy2 }, /* level 9 */ 3662306a36Sopenharmony_ci { 22, 21, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 10 */ 3762306a36Sopenharmony_ci { 22, 21, 22, 6, 5, 16, ZSTD_lazy2 }, /* level 11 */ 3862306a36Sopenharmony_ci { 22, 22, 23, 6, 5, 32, ZSTD_lazy2 }, /* level 12 */ 3962306a36Sopenharmony_ci { 22, 22, 22, 4, 5, 32, ZSTD_btlazy2 }, /* level 13 */ 4062306a36Sopenharmony_ci { 22, 22, 23, 5, 5, 32, ZSTD_btlazy2 }, /* level 14 */ 4162306a36Sopenharmony_ci { 22, 23, 23, 6, 5, 32, ZSTD_btlazy2 }, /* level 15 */ 4262306a36Sopenharmony_ci { 22, 22, 22, 5, 5, 48, ZSTD_btopt }, /* level 16 */ 4362306a36Sopenharmony_ci { 23, 23, 22, 5, 4, 64, ZSTD_btopt }, /* level 17 */ 4462306a36Sopenharmony_ci { 23, 23, 22, 6, 3, 64, ZSTD_btultra }, /* level 18 */ 4562306a36Sopenharmony_ci { 23, 24, 22, 7, 3,256, ZSTD_btultra2}, /* level 19 */ 4662306a36Sopenharmony_ci { 25, 25, 23, 7, 3,256, ZSTD_btultra2}, /* level 20 */ 4762306a36Sopenharmony_ci { 26, 26, 24, 7, 3,512, ZSTD_btultra2}, /* level 21 */ 4862306a36Sopenharmony_ci { 27, 27, 25, 9, 3,999, ZSTD_btultra2}, /* level 22 */ 4962306a36Sopenharmony_ci}, 5062306a36Sopenharmony_ci{ /* for srcSize <= 256 KB */ 5162306a36Sopenharmony_ci /* W, C, H, S, L, T, strat */ 5262306a36Sopenharmony_ci { 18, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */ 5362306a36Sopenharmony_ci { 18, 13, 14, 1, 6, 0, ZSTD_fast }, /* level 1 */ 5462306a36Sopenharmony_ci { 18, 14, 14, 1, 5, 0, ZSTD_dfast }, /* level 2 */ 5562306a36Sopenharmony_ci { 18, 16, 16, 1, 4, 0, ZSTD_dfast }, /* level 3 */ 5662306a36Sopenharmony_ci { 18, 16, 17, 3, 5, 2, ZSTD_greedy }, /* level 4.*/ 5762306a36Sopenharmony_ci { 18, 17, 18, 5, 5, 2, ZSTD_greedy }, /* level 5.*/ 5862306a36Sopenharmony_ci { 18, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6.*/ 5962306a36Sopenharmony_ci { 18, 18, 19, 4, 4, 4, ZSTD_lazy }, /* level 7 */ 6062306a36Sopenharmony_ci { 18, 18, 19, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */ 6162306a36Sopenharmony_ci { 18, 18, 19, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */ 6262306a36Sopenharmony_ci { 18, 18, 19, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */ 6362306a36Sopenharmony_ci { 18, 18, 19, 5, 4, 12, ZSTD_btlazy2 }, /* level 11.*/ 6462306a36Sopenharmony_ci { 18, 19, 19, 7, 4, 12, ZSTD_btlazy2 }, /* level 12.*/ 6562306a36Sopenharmony_ci { 18, 18, 19, 4, 4, 16, ZSTD_btopt }, /* level 13 */ 6662306a36Sopenharmony_ci { 18, 18, 19, 4, 3, 32, ZSTD_btopt }, /* level 14.*/ 6762306a36Sopenharmony_ci { 18, 18, 19, 6, 3,128, ZSTD_btopt }, /* level 15.*/ 6862306a36Sopenharmony_ci { 18, 19, 19, 6, 3,128, ZSTD_btultra }, /* level 16.*/ 6962306a36Sopenharmony_ci { 18, 19, 19, 8, 3,256, ZSTD_btultra }, /* level 17.*/ 7062306a36Sopenharmony_ci { 18, 19, 19, 6, 3,128, ZSTD_btultra2}, /* level 18.*/ 7162306a36Sopenharmony_ci { 18, 19, 19, 8, 3,256, ZSTD_btultra2}, /* level 19.*/ 7262306a36Sopenharmony_ci { 18, 19, 19, 10, 3,512, ZSTD_btultra2}, /* level 20.*/ 7362306a36Sopenharmony_ci { 18, 19, 19, 12, 3,512, ZSTD_btultra2}, /* level 21.*/ 7462306a36Sopenharmony_ci { 18, 19, 19, 13, 3,999, ZSTD_btultra2}, /* level 22.*/ 7562306a36Sopenharmony_ci}, 7662306a36Sopenharmony_ci{ /* for srcSize <= 128 KB */ 7762306a36Sopenharmony_ci /* W, C, H, S, L, T, strat */ 7862306a36Sopenharmony_ci { 17, 12, 12, 1, 5, 1, ZSTD_fast }, /* base for negative levels */ 7962306a36Sopenharmony_ci { 17, 12, 13, 1, 6, 0, ZSTD_fast }, /* level 1 */ 8062306a36Sopenharmony_ci { 17, 13, 15, 1, 5, 0, ZSTD_fast }, /* level 2 */ 8162306a36Sopenharmony_ci { 17, 15, 16, 2, 5, 0, ZSTD_dfast }, /* level 3 */ 8262306a36Sopenharmony_ci { 17, 17, 17, 2, 4, 0, ZSTD_dfast }, /* level 4 */ 8362306a36Sopenharmony_ci { 17, 16, 17, 3, 4, 2, ZSTD_greedy }, /* level 5 */ 8462306a36Sopenharmony_ci { 17, 16, 17, 3, 4, 4, ZSTD_lazy }, /* level 6 */ 8562306a36Sopenharmony_ci { 17, 16, 17, 3, 4, 8, ZSTD_lazy2 }, /* level 7 */ 8662306a36Sopenharmony_ci { 17, 16, 17, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */ 8762306a36Sopenharmony_ci { 17, 16, 17, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */ 8862306a36Sopenharmony_ci { 17, 16, 17, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */ 8962306a36Sopenharmony_ci { 17, 17, 17, 5, 4, 8, ZSTD_btlazy2 }, /* level 11 */ 9062306a36Sopenharmony_ci { 17, 18, 17, 7, 4, 12, ZSTD_btlazy2 }, /* level 12 */ 9162306a36Sopenharmony_ci { 17, 18, 17, 3, 4, 12, ZSTD_btopt }, /* level 13.*/ 9262306a36Sopenharmony_ci { 17, 18, 17, 4, 3, 32, ZSTD_btopt }, /* level 14.*/ 9362306a36Sopenharmony_ci { 17, 18, 17, 6, 3,256, ZSTD_btopt }, /* level 15.*/ 9462306a36Sopenharmony_ci { 17, 18, 17, 6, 3,128, ZSTD_btultra }, /* level 16.*/ 9562306a36Sopenharmony_ci { 17, 18, 17, 8, 3,256, ZSTD_btultra }, /* level 17.*/ 9662306a36Sopenharmony_ci { 17, 18, 17, 10, 3,512, ZSTD_btultra }, /* level 18.*/ 9762306a36Sopenharmony_ci { 17, 18, 17, 5, 3,256, ZSTD_btultra2}, /* level 19.*/ 9862306a36Sopenharmony_ci { 17, 18, 17, 7, 3,512, ZSTD_btultra2}, /* level 20.*/ 9962306a36Sopenharmony_ci { 17, 18, 17, 9, 3,512, ZSTD_btultra2}, /* level 21.*/ 10062306a36Sopenharmony_ci { 17, 18, 17, 11, 3,999, ZSTD_btultra2}, /* level 22.*/ 10162306a36Sopenharmony_ci}, 10262306a36Sopenharmony_ci{ /* for srcSize <= 16 KB */ 10362306a36Sopenharmony_ci /* W, C, H, S, L, T, strat */ 10462306a36Sopenharmony_ci { 14, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */ 10562306a36Sopenharmony_ci { 14, 14, 15, 1, 5, 0, ZSTD_fast }, /* level 1 */ 10662306a36Sopenharmony_ci { 14, 14, 15, 1, 4, 0, ZSTD_fast }, /* level 2 */ 10762306a36Sopenharmony_ci { 14, 14, 15, 2, 4, 0, ZSTD_dfast }, /* level 3 */ 10862306a36Sopenharmony_ci { 14, 14, 14, 4, 4, 2, ZSTD_greedy }, /* level 4 */ 10962306a36Sopenharmony_ci { 14, 14, 14, 3, 4, 4, ZSTD_lazy }, /* level 5.*/ 11062306a36Sopenharmony_ci { 14, 14, 14, 4, 4, 8, ZSTD_lazy2 }, /* level 6 */ 11162306a36Sopenharmony_ci { 14, 14, 14, 6, 4, 8, ZSTD_lazy2 }, /* level 7 */ 11262306a36Sopenharmony_ci { 14, 14, 14, 8, 4, 8, ZSTD_lazy2 }, /* level 8.*/ 11362306a36Sopenharmony_ci { 14, 15, 14, 5, 4, 8, ZSTD_btlazy2 }, /* level 9.*/ 11462306a36Sopenharmony_ci { 14, 15, 14, 9, 4, 8, ZSTD_btlazy2 }, /* level 10.*/ 11562306a36Sopenharmony_ci { 14, 15, 14, 3, 4, 12, ZSTD_btopt }, /* level 11.*/ 11662306a36Sopenharmony_ci { 14, 15, 14, 4, 3, 24, ZSTD_btopt }, /* level 12.*/ 11762306a36Sopenharmony_ci { 14, 15, 14, 5, 3, 32, ZSTD_btultra }, /* level 13.*/ 11862306a36Sopenharmony_ci { 14, 15, 15, 6, 3, 64, ZSTD_btultra }, /* level 14.*/ 11962306a36Sopenharmony_ci { 14, 15, 15, 7, 3,256, ZSTD_btultra }, /* level 15.*/ 12062306a36Sopenharmony_ci { 14, 15, 15, 5, 3, 48, ZSTD_btultra2}, /* level 16.*/ 12162306a36Sopenharmony_ci { 14, 15, 15, 6, 3,128, ZSTD_btultra2}, /* level 17.*/ 12262306a36Sopenharmony_ci { 14, 15, 15, 7, 3,256, ZSTD_btultra2}, /* level 18.*/ 12362306a36Sopenharmony_ci { 14, 15, 15, 8, 3,256, ZSTD_btultra2}, /* level 19.*/ 12462306a36Sopenharmony_ci { 14, 15, 15, 8, 3,512, ZSTD_btultra2}, /* level 20.*/ 12562306a36Sopenharmony_ci { 14, 15, 15, 9, 3,512, ZSTD_btultra2}, /* level 21.*/ 12662306a36Sopenharmony_ci { 14, 15, 15, 10, 3,999, ZSTD_btultra2}, /* level 22.*/ 12762306a36Sopenharmony_ci}, 12862306a36Sopenharmony_ci}; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci#endif /* ZSTD_CLEVELS_H */ 133