1 | /* Copyright 2013 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 | /* Block split point selection utilities. */ |
8 | |
9 | #ifndef BROTLI_ENC_BLOCK_SPLITTER_H_ |
10 | #define BROTLI_ENC_BLOCK_SPLITTER_H_ |
11 | |
12 | #include "../common/platform.h" |
13 | #include <brotli/types.h> |
14 | #include "./command.h" |
15 | #include "./memory.h" |
16 | #include "./quality.h" |
17 | |
18 | #if defined(__cplusplus) || defined(c_plusplus) |
19 | extern "C" { |
20 | #endif |
21 | |
22 | typedef struct BlockSplit { |
23 | size_t num_types; /* Amount of distinct types */ |
24 | size_t num_blocks; /* Amount of values in types and length */ |
25 | uint8_t* types; |
26 | uint32_t* lengths; |
27 | |
28 | size_t types_alloc_size; |
29 | size_t lengths_alloc_size; |
30 | } BlockSplit; |
31 | |
32 | BROTLI_INTERNAL void BrotliInitBlockSplit(BlockSplit* self); |
33 | BROTLI_INTERNAL void BrotliDestroyBlockSplit(MemoryManager* m, |
34 | BlockSplit* self); |
35 | |
36 | BROTLI_INTERNAL void BrotliSplitBlock(MemoryManager* m, |
37 | const Command* cmds, |
38 | const size_t num_commands, |
39 | const uint8_t* data, |
40 | const size_t offset, |
41 | const size_t mask, |
42 | const BrotliEncoderParams* params, |
43 | BlockSplit* literal_split, |
44 | BlockSplit* insert_and_copy_split, |
45 | BlockSplit* dist_split); |
46 | |
47 | #if defined(__cplusplus) || defined(c_plusplus) |
48 | } /* extern "C" */ |
49 | #endif |
50 | |
51 | #endif /* BROTLI_ENC_BLOCK_SPLITTER_H_ */ |
52 | |