Mercurial > hgrepos > Python2 > PyMuPDF
comparison mupdf-source/thirdparty/brotli/c/enc/state.h @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:1d09e1dec1d9 | 2:b50eed0cc0ef |
|---|---|
| 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" | |
| 16 #include "compress_fragment_two_pass.h" | |
| 17 #include "hash.h" | |
| 18 #include "memory.h" | |
| 19 #include "params.h" | |
| 20 #include "ringbuffer.h" | |
| 21 | |
| 22 typedef enum BrotliEncoderStreamState { | |
| 23 /* Default state. */ | |
| 24 BROTLI_STREAM_PROCESSING = 0, | |
| 25 /* Intermediate state; after next block is emitted, byte-padding should be | |
| 26 performed before getting back to default state. */ | |
| 27 BROTLI_STREAM_FLUSH_REQUESTED = 1, | |
| 28 /* Last metablock was produced; no more input is acceptable. */ | |
| 29 BROTLI_STREAM_FINISHED = 2, | |
| 30 /* Flushing compressed block and writing meta-data block header. */ | |
| 31 BROTLI_STREAM_METADATA_HEAD = 3, | |
| 32 /* Writing metadata block body. */ | |
| 33 BROTLI_STREAM_METADATA_BODY = 4 | |
| 34 } BrotliEncoderStreamState; | |
| 35 | |
| 36 typedef enum BrotliEncoderFlintState { | |
| 37 BROTLI_FLINT_NEEDS_2_BYTES = 2, | |
| 38 BROTLI_FLINT_NEEDS_1_BYTE = 1, | |
| 39 BROTLI_FLINT_WAITING_FOR_PROCESSING = 0, | |
| 40 BROTLI_FLINT_WAITING_FOR_FLUSHING = -1, | |
| 41 BROTLI_FLINT_DONE = -2 | |
| 42 } BrotliEncoderFlintState; | |
| 43 | |
| 44 typedef struct BrotliEncoderStateStruct { | |
| 45 BrotliEncoderParams params; | |
| 46 | |
| 47 MemoryManager memory_manager_; | |
| 48 | |
| 49 uint64_t input_pos_; | |
| 50 RingBuffer ringbuffer_; | |
| 51 size_t cmd_alloc_size_; | |
| 52 Command* commands_; | |
| 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_; | |
| 58 int dist_cache_[BROTLI_NUM_DISTANCE_SHORT_CODES]; | |
| 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 | |
| 71 Hasher hasher_; | |
| 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 | |
| 78 BrotliOnePassArena* one_pass_arena_; | |
| 79 BrotliTwoPassArena* two_pass_arena_; | |
| 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]; | |
| 93 } tiny_buf_; | |
| 94 uint32_t remaining_metadata_bytes_; | |
| 95 BrotliEncoderStreamState stream_state_; | |
| 96 | |
| 97 BROTLI_BOOL is_last_block_emitted_; | |
| 98 BROTLI_BOOL is_initialized_; | |
| 99 } BrotliEncoderStateStruct; | |
| 100 | |
| 101 typedef struct BrotliEncoderStateStruct BrotliEncoderStateInternal; | |
| 102 #define BrotliEncoderState BrotliEncoderStateInternal | |
| 103 | |
| 104 #endif // BROTLI_ENC_STATE_H_ |
