9#ifndef BROTLI_DEC_STATE_H_
10#define BROTLI_DEC_STATE_H_
12#include <brotli/decode.h>
13#include <brotli/shared_dictionary.h>
14#include <brotli/types.h>
23#if defined(__cplusplus) || defined(c_plusplus)
203 const uint8_t*
chunks[16];
320 uint32_t
mtf[64 + 1];
372#define BrotliDecoderState BrotliDecoderStateInternal
385#define BROTLI_DECODER_ALLOC(S, L) S->alloc_func(S->memory_manager_opaque, L)
387#define BROTLI_DECODER_FREE(S, X) { \
388 S->free_func(S->memory_manager_opaque, X); \
394#define BROTLI_BLOCK_SIZE_CAP (1U << 24)
396#if defined(__cplusplus) || defined(c_plusplus)
#define BROTLI_NUM_COMMAND_SYMBOLS
Definition constants.h:27
#define BROTLI_CODE_LENGTH_CODES
Definition constants.h:36
#define BROTLI_HUFFMAN_MAX_SIZE_272
Definition huffman.h:26
#define BROTLI_HUFFMAN_MAX_CODE_LENGTH
Definition huffman.h:19
BrotliRunningReadBlockLengthState
Definition state.h:187
@ BROTLI_STATE_READ_BLOCK_LENGTH_NONE
Definition state.h:188
@ BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX
Definition state.h:189
BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(BrotliDecoderState *s, HuffmanTreeGroup *group, uint32_t alphabet_size_max, uint32_t alphabet_size_limit, uint32_t ntrees)
Definition state.c:136
BrotliRunningDecodeUint8State
Definition state.h:181
@ BROTLI_STATE_DECODE_UINT8_SHORT
Definition state.h:183
@ BROTLI_STATE_DECODE_UINT8_LONG
Definition state.h:184
@ BROTLI_STATE_DECODE_UINT8_NONE
Definition state.h:182
struct BrotliMetablockHeaderArena BrotliMetablockHeaderArena
BrotliRunningState
Definition state.h:113
@ BROTLI_STATE_METABLOCK_DONE
Definition state.h:128
@ BROTLI_STATE_COMMAND_POST_DECODE_LITERALS
Definition state.h:123
@ BROTLI_STATE_DONE
Definition state.h:140
@ BROTLI_STATE_COMMAND_INNER
Definition state.h:122
@ BROTLI_STATE_COMMAND_POST_WRITE_2
Definition state.h:130
@ BROTLI_STATE_COMMAND_POST_WRITE_1
Definition state.h:129
@ BROTLI_STATE_HUFFMAN_CODE_1
Definition state.h:133
@ BROTLI_STATE_METABLOCK_HEADER_2
Definition state.h:119
@ BROTLI_STATE_COMMAND_INNER_WRITE
Definition state.h:127
@ BROTLI_STATE_HUFFMAN_CODE_3
Definition state.h:135
@ BROTLI_STATE_HUFFMAN_CODE_0
Definition state.h:132
@ BROTLI_STATE_METADATA
Definition state.h:126
@ BROTLI_STATE_COMMAND_BEGIN
Definition state.h:121
@ BROTLI_STATE_CONTEXT_MAP_2
Definition state.h:137
@ BROTLI_STATE_INITIALIZE
Definition state.h:116
@ BROTLI_STATE_UNINITED
Definition state.h:114
@ BROTLI_STATE_TREE_GROUP
Definition state.h:138
@ BROTLI_STATE_METABLOCK_BEGIN
Definition state.h:117
@ BROTLI_STATE_COMMAND_POST_WRAP_COPY
Definition state.h:124
@ BROTLI_STATE_METABLOCK_HEADER
Definition state.h:118
@ BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_BODY
Definition state.h:139
@ BROTLI_STATE_UNCOMPRESSED
Definition state.h:125
@ BROTLI_STATE_LARGE_WINDOW_BITS
Definition state.h:115
@ BROTLI_STATE_HUFFMAN_CODE_2
Definition state.h:134
@ BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_HEADER
Definition state.h:131
@ BROTLI_STATE_CONTEXT_MODES
Definition state.h:120
@ BROTLI_STATE_CONTEXT_MAP_1
Definition state.h:136
BrotliRunningUncompressedState
Definition state.h:154
@ BROTLI_STATE_UNCOMPRESSED_NONE
Definition state.h:155
@ BROTLI_STATE_UNCOMPRESSED_WRITE
Definition state.h:156
BrotliRunningTreeGroupState
Definition state.h:159
@ BROTLI_STATE_TREE_GROUP_NONE
Definition state.h:160
@ BROTLI_STATE_TREE_GROUP_LOOP
Definition state.h:161
BrotliRunningHuffmanState
Definition state.h:172
@ BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS
Definition state.h:178
@ BROTLI_STATE_HUFFMAN_SIMPLE_READ
Definition state.h:175
@ BROTLI_STATE_HUFFMAN_NONE
Definition state.h:173
@ BROTLI_STATE_HUFFMAN_SIMPLE_BUILD
Definition state.h:176
@ BROTLI_STATE_HUFFMAN_COMPLEX
Definition state.h:177
@ BROTLI_STATE_HUFFMAN_SIMPLE_SIZE
Definition state.h:174
BrotliRunningMetablockHeaderState
Definition state.h:143
@ BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED
Definition state.h:148
@ BROTLI_STATE_METABLOCK_HEADER_SIZE
Definition state.h:147
@ BROTLI_STATE_METABLOCK_HEADER_EMPTY
Definition state.h:145
@ BROTLI_STATE_METABLOCK_HEADER_METADATA
Definition state.h:151
@ BROTLI_STATE_METABLOCK_HEADER_NIBBLES
Definition state.h:146
@ BROTLI_STATE_METABLOCK_HEADER_NONE
Definition state.h:144
@ BROTLI_STATE_METABLOCK_HEADER_BYTES
Definition state.h:150
@ BROTLI_STATE_METABLOCK_HEADER_RESERVED
Definition state.h:149
struct BrotliMetablockBodyArena BrotliMetablockBodyArena
BROTLI_INTERNAL void BrotliDecoderStateCleanup(BrotliDecoderState *s)
Definition state.c:129
BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState *s, brotli_alloc_func alloc_func, brotli_free_func free_func, void *opaque)
Definition state.c:18
BROTLI_INTERNAL void BrotliDecoderStateMetablockBegin(BrotliDecoderState *s)
Definition state.c:90
BROTLI_INTERNAL void BrotliDecoderStateCleanupAfterMetablock(BrotliDecoderState *s)
Definition state.c:120
BrotliRunningContextMapState
Definition state.h:164
@ BROTLI_STATE_CONTEXT_MAP_DECODE
Definition state.h:168
@ BROTLI_STATE_CONTEXT_MAP_READ_PREFIX
Definition state.h:166
@ BROTLI_STATE_CONTEXT_MAP_HUFFMAN
Definition state.h:167
@ BROTLI_STATE_CONTEXT_MAP_TRANSFORM
Definition state.h:169
@ BROTLI_STATE_CONTEXT_MAP_NONE
Definition state.h:165
struct BrotliDecoderCompoundDictionary BrotliDecoderCompoundDictionary
void(* brotli_decoder_metadata_chunk_func)(void *opaque, const uint8_t *data, size_t size)
Definition decode.h:388
void(* brotli_decoder_metadata_start_func)(void *opaque, size_t size)
Definition decode.h:374
Definition bit_reader.h:36
int total_size
Definition state.h:198
const uint8_t * chunks[16]
Definition state.h:203
int br_copied
Definition state.h:202
int br_length
Definition state.h:201
int br_index
Definition state.h:199
int block_bits
Definition state.h:205
int num_chunks
Definition state.h:197
int chunk_offsets[16]
Definition state.h:204
uint8_t block_map[256]
Definition state.h:206
int br_offset
Definition state.h:200
void * metadata_callback_opaque
Definition state.h:332
HuffmanTreeGroup literal_hgroup
Definition state.h:273
uint32_t mtf[64+1]
Definition state.h:305
unsigned int is_last_metablock
Definition state.h:315
int pos
Definition state.h:256
BrotliRunningReadBlockLengthState substate_read_block_length
Definition state.h:313
int max_backward_distance
Definition state.h:257
uint8_t * context_modes
Definition state.h:328
brotli_decoder_metadata_chunk_func metadata_chunk_func
Definition state.h:331
int dist_rb_idx
Definition state.h:261
BrotliMetablockBodyArena body
Definition state.h:337
uint32_t buffer_length
Definition state.h:254
HuffmanCode * htree_command
Definition state.h:266
BrotliMetablockHeaderArena header
Definition state.h:336
HuffmanCode * block_len_trees
Definition state.h:277
int ringbuffer_size
Definition state.h:259
size_t rb_roundtrips
Definition state.h:300
unsigned int large_window
Definition state.h:320
BrotliDecoderCompoundDictionary * compound_dictionary
Definition state.h:361
uint32_t trivial_literal_contexts[8]
Definition state.h:333
uint32_t distance_postfix_bits
Definition state.h:289
unsigned int should_wrap_ringbuffer
Definition state.h:318
BrotliBitReader br
Definition state.h:242
uint32_t num_dist_htrees
Definition state.h:291
unsigned int canny_ringbuffer_allocation
Definition state.h:319
uint8_t * ringbuffer_end
Definition state.h:265
int error_code
Definition state.h:263
HuffmanCode * block_type_trees
Definition state.h:276
unsigned int is_metadata
Definition state.h:317
uint32_t block_type_rb[6]
Definition state.h:288
brotli_decoder_metadata_start_func metadata_start_func
Definition state.h:330
uint8_t * dist_context_map_slice
Definition state.h:269
uint64_t u64
Definition state.h:251
BrotliRunningDecodeUint8State substate_decode_uint8
Definition state.h:312
uint8_t * context_map
Definition state.h:327
HuffmanCode * literal_htree
Definition state.h:293
BrotliRunningUncompressedState substate_uncompressed
Definition state.h:311
unsigned int is_uncompressed
Definition state.h:316
uint8_t * context_map_slice
Definition state.h:268
int distance_code
Definition state.h:297
unsigned int size_nibbles
Definition state.h:321
int ringbuffer_mask
Definition state.h:260
uint8_t * dist_context_map
Definition state.h:292
BrotliRunningMetablockHeaderState substate_metablock_header
Definition state.h:310
int copy_length
Definition state.h:296
int max_distance
Definition state.h:258
union BrotliDecoderStateStruct::@8 buffer
uint32_t window_bits
Definition state.h:322
size_t partial_pos_out
Definition state.h:301
uint32_t num_literal_htrees
Definition state.h:326
HuffmanTreeGroup insert_copy_hgroup
Definition state.h:274
int distance_context
Definition state.h:283
BrotliRunningState state
Definition state.h:237
union BrotliDecoderStateStruct::@9 arena
void * memory_manager_opaque
Definition state.h:246
int meta_block_remaining_len
Definition state.h:284
brotli_free_func free_func
Definition state.h:245
uint32_t num_block_types[3]
Definition state.h:287
brotli_alloc_func alloc_func
Definition state.h:244
const uint8_t * context_lookup
Definition state.h:267
int loop_counter
Definition state.h:240
uint32_t block_length[3]
Definition state.h:286
uint32_t mtf_upper_bound
Definition state.h:304
uint32_t num_direct_distance_codes
Definition state.h:290
uint64_t used_input
Definition state.h:335
const BrotliDictionary * dictionary
Definition state.h:330
int trivial_literal_context
Definition state.h:280
uint8_t dist_htree_index
Definition state.h:294
HuffmanTreeGroup distance_hgroup
Definition state.h:275
uint8_t * ringbuffer
Definition state.h:264
int dist_rb[4]
Definition state.h:262
int new_ringbuffer_size
Definition state.h:324
uint32_t block_length_index
Definition state.h:285
uint32_t dist_offset[544]
Definition state.h:233
uint8_t dist_extra_bits[544]
Definition state.h:232
Definition shared_dictionary_internal.h:22
void *(* brotli_alloc_func)(void *opaque, size_t size)
Definition types.h:71
void(* brotli_free_func)(void *opaque, void *address)
Definition types.h:81
#define BROTLI_BOOL
Definition types.h:49
unsigned char u8
Definition harness.c:16