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