histogram.h (1813B)
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 /* Models the histograms of literals, commands and distance codes. */ 8 9 #ifndef BROTLI_ENC_HISTOGRAM_H_ 10 #define BROTLI_ENC_HISTOGRAM_H_ 11 12 #include "../common/constants.h" 13 #include "../common/context.h" 14 #include "../common/platform.h" 15 #include "block_splitter.h" 16 #include "command.h" 17 18 #if defined(__cplusplus) || defined(c_plusplus) 19 extern "C" { 20 #endif 21 22 /* The distance symbols effectively used by "Large Window Brotli" (32-bit). */ 23 #define BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 544 24 25 #define FN(X) X ## Literal 26 #define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS 27 #define DataType uint8_t 28 #include "histogram_inc.h" /* NOLINT(build/include) */ 29 #undef DataType 30 #undef DATA_SIZE 31 #undef FN 32 33 #define FN(X) X ## Command 34 #define DataType uint16_t 35 #define DATA_SIZE BROTLI_NUM_COMMAND_SYMBOLS 36 #include "histogram_inc.h" /* NOLINT(build/include) */ 37 #undef DATA_SIZE 38 #undef FN 39 40 #define FN(X) X ## Distance 41 #define DATA_SIZE BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 42 #include "histogram_inc.h" /* NOLINT(build/include) */ 43 #undef DataType 44 #undef DATA_SIZE 45 #undef FN 46 47 BROTLI_INTERNAL void BrotliBuildHistogramsWithContext( 48 const Command* cmds, const size_t num_commands, 49 const BlockSplit* literal_split, const BlockSplit* insert_and_copy_split, 50 const BlockSplit* dist_split, const uint8_t* ringbuffer, size_t pos, 51 size_t mask, uint8_t prev_byte, uint8_t prev_byte2, 52 const ContextType* context_modes, HistogramLiteral* literal_histograms, 53 HistogramCommand* insert_and_copy_histograms, 54 HistogramDistance* copy_dist_histograms); 55 56 #if defined(__cplusplus) || defined(c_plusplus) 57 } /* extern "C" */ 58 #endif 59 60 #endif /* BROTLI_ENC_HISTOGRAM_H_ */