1*f4ee7fbaSAndroid Build Coastguard Worker /* Copyright 2013 Google Inc. All Rights Reserved. 2*f4ee7fbaSAndroid Build Coastguard Worker 3*f4ee7fbaSAndroid Build Coastguard Worker Distributed under MIT license. 4*f4ee7fbaSAndroid Build Coastguard Worker See file LICENSE for detail or copy at https://opensource.org/licenses/MIT 5*f4ee7fbaSAndroid Build Coastguard Worker */ 6*f4ee7fbaSAndroid Build Coastguard Worker 7*f4ee7fbaSAndroid Build Coastguard Worker /* Models the histograms of literals, commands and distance codes. */ 8*f4ee7fbaSAndroid Build Coastguard Worker 9*f4ee7fbaSAndroid Build Coastguard Worker #ifndef BROTLI_ENC_HISTOGRAM_H_ 10*f4ee7fbaSAndroid Build Coastguard Worker #define BROTLI_ENC_HISTOGRAM_H_ 11*f4ee7fbaSAndroid Build Coastguard Worker 12*f4ee7fbaSAndroid Build Coastguard Worker #include <string.h> /* memset */ 13*f4ee7fbaSAndroid Build Coastguard Worker 14*f4ee7fbaSAndroid Build Coastguard Worker #include "../common/constants.h" 15*f4ee7fbaSAndroid Build Coastguard Worker #include "../common/context.h" 16*f4ee7fbaSAndroid Build Coastguard Worker #include "../common/platform.h" 17*f4ee7fbaSAndroid Build Coastguard Worker #include <brotli/types.h> 18*f4ee7fbaSAndroid Build Coastguard Worker #include "./block_splitter.h" 19*f4ee7fbaSAndroid Build Coastguard Worker #include "./command.h" 20*f4ee7fbaSAndroid Build Coastguard Worker 21*f4ee7fbaSAndroid Build Coastguard Worker #if defined(__cplusplus) || defined(c_plusplus) 22*f4ee7fbaSAndroid Build Coastguard Worker extern "C" { 23*f4ee7fbaSAndroid Build Coastguard Worker #endif 24*f4ee7fbaSAndroid Build Coastguard Worker 25*f4ee7fbaSAndroid Build Coastguard Worker /* The distance symbols effectively used by "Large Window Brotli" (32-bit). */ 26*f4ee7fbaSAndroid Build Coastguard Worker #define BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 544 27*f4ee7fbaSAndroid Build Coastguard Worker 28*f4ee7fbaSAndroid Build Coastguard Worker #define FN(X) X ## Literal 29*f4ee7fbaSAndroid Build Coastguard Worker #define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS 30*f4ee7fbaSAndroid Build Coastguard Worker #define DataType uint8_t 31*f4ee7fbaSAndroid Build Coastguard Worker #include "./histogram_inc.h" /* NOLINT(build/include) */ 32*f4ee7fbaSAndroid Build Coastguard Worker #undef DataType 33*f4ee7fbaSAndroid Build Coastguard Worker #undef DATA_SIZE 34*f4ee7fbaSAndroid Build Coastguard Worker #undef FN 35*f4ee7fbaSAndroid Build Coastguard Worker 36*f4ee7fbaSAndroid Build Coastguard Worker #define FN(X) X ## Command 37*f4ee7fbaSAndroid Build Coastguard Worker #define DataType uint16_t 38*f4ee7fbaSAndroid Build Coastguard Worker #define DATA_SIZE BROTLI_NUM_COMMAND_SYMBOLS 39*f4ee7fbaSAndroid Build Coastguard Worker #include "./histogram_inc.h" /* NOLINT(build/include) */ 40*f4ee7fbaSAndroid Build Coastguard Worker #undef DATA_SIZE 41*f4ee7fbaSAndroid Build Coastguard Worker #undef FN 42*f4ee7fbaSAndroid Build Coastguard Worker 43*f4ee7fbaSAndroid Build Coastguard Worker #define FN(X) X ## Distance 44*f4ee7fbaSAndroid Build Coastguard Worker #define DATA_SIZE BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS 45*f4ee7fbaSAndroid Build Coastguard Worker #include "./histogram_inc.h" /* NOLINT(build/include) */ 46*f4ee7fbaSAndroid Build Coastguard Worker #undef DataType 47*f4ee7fbaSAndroid Build Coastguard Worker #undef DATA_SIZE 48*f4ee7fbaSAndroid Build Coastguard Worker #undef FN 49*f4ee7fbaSAndroid Build Coastguard Worker 50*f4ee7fbaSAndroid Build Coastguard Worker BROTLI_INTERNAL void BrotliBuildHistogramsWithContext( 51*f4ee7fbaSAndroid Build Coastguard Worker const Command* cmds, const size_t num_commands, 52*f4ee7fbaSAndroid Build Coastguard Worker const BlockSplit* literal_split, const BlockSplit* insert_and_copy_split, 53*f4ee7fbaSAndroid Build Coastguard Worker const BlockSplit* dist_split, const uint8_t* ringbuffer, size_t pos, 54*f4ee7fbaSAndroid Build Coastguard Worker size_t mask, uint8_t prev_byte, uint8_t prev_byte2, 55*f4ee7fbaSAndroid Build Coastguard Worker const ContextType* context_modes, HistogramLiteral* literal_histograms, 56*f4ee7fbaSAndroid Build Coastguard Worker HistogramCommand* insert_and_copy_histograms, 57*f4ee7fbaSAndroid Build Coastguard Worker HistogramDistance* copy_dist_histograms); 58*f4ee7fbaSAndroid Build Coastguard Worker 59*f4ee7fbaSAndroid Build Coastguard Worker #if defined(__cplusplus) || defined(c_plusplus) 60*f4ee7fbaSAndroid Build Coastguard Worker } /* extern "C" */ 61*f4ee7fbaSAndroid Build Coastguard Worker #endif 62*f4ee7fbaSAndroid Build Coastguard Worker 63*f4ee7fbaSAndroid Build Coastguard Worker #endif /* BROTLI_ENC_HISTOGRAM_H_ */ 64