13#ifndef LZMA_LZMA_COMMON_H
14#define LZMA_LZMA_COMMON_H
17#include "range_common.h"
27#define POS_STATES_MAX (1 << LZMA_PB_MAX)
79#define update_literal(state) \
80 state = ((state) <= STATE_SHORTREP_LIT_LIT \
82 : ((state) <= STATE_LIT_SHORTREP \
88#define update_literal_normal(state) \
89 state = ((state) <= STATE_SHORTREP_LIT_LIT \
95#define update_literal_matched(state) \
96 state = ((state) <= STATE_LIT_SHORTREP \
101#define update_match(state) \
102 state = ((state) < LIT_STATES ? STATE_LIT_MATCH : STATE_NONLIT_MATCH)
105#define update_long_rep(state) \
106 state = ((state) < LIT_STATES ? STATE_LIT_LONGREP : STATE_NONLIT_REP)
109#define update_short_rep(state) \
110 state = ((state) < LIT_STATES ? STATE_LIT_SHORTREP : STATE_NONLIT_REP)
113#define is_literal_state(state) \
114 ((state) < LIT_STATES)
128#define LITERAL_CODER_SIZE UINT32_C(0x300)
131#define LITERAL_CODERS_MAX (1 << LZMA_LCLP_MAX)
134#define literal_mask_calc(lc, lp) \
135 ((UINT32_C(0x100) << (lp)) - (UINT32_C(0x100) >> (lc)))
141#define literal_subcoder(probs, lc, literal_mask, pos, prev_byte) \
142 ((probs) + UINT32_C(3) * \
143 (((((pos) << 8) + (prev_byte)) & (literal_mask)) << (lc)))
147literal_init(
probability *probs, uint32_t lc, uint32_t lp)
153 for (
size_t i = 0;
i < coders; ++
i)
165#define MATCH_LEN_MIN 2
173#define LEN_LOW_BITS 3
174#define LEN_LOW_SYMBOLS (1 << LEN_LOW_BITS)
175#define LEN_MID_BITS 3
176#define LEN_MID_SYMBOLS (1 << LEN_MID_BITS)
177#define LEN_HIGH_BITS 8
178#define LEN_HIGH_SYMBOLS (1 << LEN_HIGH_BITS)
179#define LEN_SYMBOLS (LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS + LEN_HIGH_SYMBOLS)
183#define MATCH_LEN_MAX (MATCH_LEN_MIN + LEN_SYMBOLS - 1)
197#define get_dist_state(len) \
198 ((len) < DIST_STATES + MATCH_LEN_MIN \
199 ? (len) - MATCH_LEN_MIN \
204#define DIST_SLOT_BITS 6
205#define DIST_SLOTS (1 << DIST_SLOT_BITS)
213#define DIST_MODEL_START 4
224#define DIST_MODEL_END 14
227#define FULL_DISTANCES_BITS (DIST_MODEL_END / 2)
228#define FULL_DISTANCES (1 << FULL_DISTANCES_BITS)
233#define ALIGN_SIZE (1 << ALIGN_BITS)
234#define ALIGN_MASK (ALIGN_SIZE - 1)
#define LZMA_PB_MAX
Definition LzmaEnc.c:330
#define assert(condition)
Definition lz4.c:273
Options specific to the LZMA1 and LZMA2 filters.
Definition lzma12.h:185
uint32_t lp
Number of literal position bits.
Definition lzma12.h:293
uint32_t lc
Number of literal context bits.
Definition lzma12.h:281
uint32_t pb
Number of position bits.
Definition lzma12.h:316
lzma_index ** i
Definition index.h:629
#define LZMA_LCLP_MAX
Definition lzma12.h:283
const lzma_options_lzma * options
Definition container.h:545
lzma_lzma_state
Definition lzma_common.h:56
@ STATE_MATCH_LIT_LIT
Definition lzma_common.h:58
@ STATE_NONLIT_MATCH
Definition lzma_common.h:67
@ STATE_LIT_LIT
Definition lzma_common.h:57
@ STATE_LIT_LONGREP
Definition lzma_common.h:65
@ STATE_SHORTREP_LIT
Definition lzma_common.h:63
@ STATE_NONLIT_REP
Definition lzma_common.h:68
@ STATE_LIT_SHORTREP
Definition lzma_common.h:66
@ STATE_REP_LIT_LIT
Definition lzma_common.h:59
@ STATE_LIT_MATCH
Definition lzma_common.h:64
@ STATE_REP_LIT
Definition lzma_common.h:62
@ STATE_MATCH_LIT
Definition lzma_common.h:61
@ STATE_SHORTREP_LIT_LIT
Definition lzma_common.h:60
#define LITERAL_CODER_SIZE
Definition lzma_common.h:115
uint16_t probability
Type of probabilities used with range coder.
Definition range_common.h:69
#define bit_reset(prob)
Definition range_common.h:37