Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
state.h
Go to the documentation of this file.
1/* Copyright 2022 Google Inc. All Rights Reserved.
2
3 Distributed under MIT license.
4 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5*/
6
7/* Encoder state. */
8
9#ifndef BROTLI_ENC_STATE_H_
10#define BROTLI_ENC_STATE_H_
11
12#include <brotli/types.h>
13
14#include "command.h"
15#include "compress_fragment.h"
17#include "hash.h"
18#include "memory.h"
19#include "params.h"
20#include "ringbuffer.h"
21
23 /* Default state. */
25 /* Intermediate state; after next block is emitted, byte-padding should be
26 performed before getting back to default state. */
28 /* Last metablock was produced; no more input is acceptable. */
30 /* Flushing compressed block and writing meta-data block header. */
32 /* Writing metadata block body. */
35
43
44typedef struct BrotliEncoderStateStruct {
46
48
49 uint64_t input_pos_;
51 size_t cmd_alloc_size_;
53 size_t num_commands_;
54 size_t num_literals_;
55 size_t last_insert_len_;
56 uint64_t last_flush_pos_;
57 uint64_t last_processed_pos_;
59 int saved_dist_cache_[4];
60 uint16_t last_bytes_;
61 uint8_t last_bytes_bits_;
62 /* "Flint" is a tiny uncompressed block emitted before the continuation
63 block to unwire literal context from previous data. Despite being int8_t,
64 field is actually BrotliEncoderFlintState enum. */
65 int8_t flint_;
66 uint8_t prev_byte_;
67 uint8_t prev_byte2_;
68 size_t storage_size_;
69 uint8_t* storage_;
70
72
73 /* Hash table for FAST_ONE_PASS_COMPRESSION_QUALITY mode. */
74 int small_table_[1 << 10]; /* 4KiB */
75 int* large_table_; /* Allocated only when needed */
76 size_t large_table_size_;
77
80
81 /* Command and literal buffers for FAST_TWO_PASS_COMPRESSION_QUALITY. */
82 uint32_t* command_buf_;
83 uint8_t* literal_buf_;
84
85 uint64_t total_in_;
86 uint8_t* next_out_;
87 size_t available_out_;
88 uint64_t total_out_;
89 /* Temporary buffer for padding flush bits or metadata block header / body. */
90 union {
91 uint64_t u64[2];
92 uint8_t u8[16];
96
100
102#define BrotliEncoderState BrotliEncoderStateInternal
103
104#endif // BROTLI_ENC_STATE_H_
#define BROTLI_NUM_DISTANCE_SHORT_CODES
Definition constants.h:60
BrotliEncoderFlintState
Definition encode.c:57
BrotliEncoderStreamState
Definition encode.c:43
BrotliEncoderFlintState
Definition state.h:36
@ BROTLI_FLINT_WAITING_FOR_FLUSHING
Definition state.h:40
@ BROTLI_FLINT_WAITING_FOR_PROCESSING
Definition state.h:39
@ BROTLI_FLINT_NEEDS_2_BYTES
Definition state.h:37
@ BROTLI_FLINT_NEEDS_1_BYTE
Definition state.h:38
@ BROTLI_FLINT_DONE
Definition state.h:41
BrotliEncoderStreamState
Definition state.h:22
@ BROTLI_STREAM_FLUSH_REQUESTED
Definition state.h:27
@ BROTLI_STREAM_PROCESSING
Definition state.h:24
@ BROTLI_STREAM_FINISHED
Definition state.h:29
@ BROTLI_STREAM_METADATA_BODY
Definition state.h:33
@ BROTLI_STREAM_METADATA_HEAD
Definition state.h:31
struct BrotliEncoderStateStruct BrotliEncoderStateStruct
Definition params.h:32
Definition encode.c:65
int8_t flint_
Definition encode.c:86
size_t last_insert_len_
Definition encode.c:76
int small_table_[1<< 10]
Definition encode.c:95
uint16_t last_bytes_
Definition encode.c:81
BROTLI_BOOL is_initialized_
Definition encode.c:128
Hasher hasher_
Definition encode.c:92
int dist_cache_[BROTLI_NUM_DISTANCE_SHORT_CODES]
Definition encode.c:79
size_t large_table_size_
Definition encode.c:97
int * large_table_
Definition encode.c:96
uint8_t last_bytes_bits_
Definition encode.c:82
size_t cmd_alloc_size_
Definition encode.c:72
RingBuffer ringbuffer_
Definition encode.c:71
size_t available_out_
Definition encode.c:117
BROTLI_BOOL is_last_block_emitted_
Definition encode.c:127
BrotliEncoderStreamState stream_state_
Definition encode.c:125
Command * commands_
Definition encode.c:73
BrotliEncoderParams params
Definition encode.c:66
uint8_t prev_byte_
Definition encode.c:87
BrotliOnePassArena * one_pass_arena_
Definition state.h:78
uint64_t last_processed_pos_
Definition encode.c:78
BrotliTwoPassArena * two_pass_arena_
Definition state.h:79
uint64_t last_flush_pos_
Definition encode.c:77
size_t num_literals_
Definition encode.c:75
int saved_dist_cache_[4]
Definition encode.c:80
size_t num_commands_
Definition encode.c:74
uint8_t * storage_
Definition encode.c:90
MemoryManager memory_manager_
Definition encode.c:68
uint32_t * command_buf_
Definition encode.c:113
uint8_t prev_byte2_
Definition encode.c:88
uint64_t input_pos_
Definition encode.c:70
size_t storage_size_
Definition encode.c:89
uint64_t total_in_
Definition state.h:85
union BrotliEncoderStateStruct::@11 tiny_buf_
uint32_t remaining_metadata_bytes_
Definition encode.c:124
size_t total_out_
Definition encode.c:118
uint8_t * next_out_
Definition encode.c:116
uint8_t * literal_buf_
Definition encode.c:114
Definition compress_fragment.h:25
Definition compress_fragment_two_pass.h:29
Definition command.h:107
Definition hash.h:381
Definition memory.h:26
Definition ringbuffer.h:32
#define BROTLI_BOOL
Definition types.h:49
unsigned char u8
Definition harness.c:16
uint64_t u64
Definition zstd_decompress.c:63