/* NOLINT(build/header_guard) */ /* Copyright 2013 Google Inc. All Rights Reserved. Distributed under MIT license. See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ /* template parameters: FN, CODE */ #define HistogramType … /* Computes the bit cost reduction by combining out[idx1] and out[idx2] and if it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue. */ BROTLI_INTERNAL void FN(BrotliCompareAndPushToQueue)( const HistogramType* out, HistogramType* tmp, const uint32_t* cluster_size, uint32_t idx1, uint32_t idx2, size_t max_num_pairs, HistogramPair* pairs, size_t* num_pairs) CODE BROTLI_INTERNAL size_t FN(BrotliHistogramCombine)(HistogramType* out, HistogramType* tmp, uint32_t* cluster_size, uint32_t* symbols, uint32_t* clusters, HistogramPair* pairs, size_t num_clusters, size_t symbols_size, size_t max_clusters, size_t max_num_pairs) CODE /* What is the bit cost of moving histogram from cur_symbol to candidate. */ BROTLI_INTERNAL double FN(BrotliHistogramBitCostDistance)( const HistogramType* histogram, const HistogramType* candidate, HistogramType* tmp) CODE /* Find the best 'out' histogram for each of the 'in' histograms. When called, clusters[0..num_clusters) contains the unique values from symbols[0..in_size), but this property is not preserved in this function. Note: we assume that out[]->bit_cost_ is already up-to-date. */ BROTLI_INTERNAL void FN(BrotliHistogramRemap)(const HistogramType* in, size_t in_size, const uint32_t* clusters, size_t num_clusters, HistogramType* out, HistogramType* tmp, uint32_t* symbols) CODE /* Reorders elements of the out[0..length) array and changes values in symbols[0..length) array in the following way: * when called, symbols[] contains indexes into out[], and has N unique values (possibly N < length) * on return, symbols'[i] = f(symbols[i]) and out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length, where f is a bijection between the range of symbols[] and [0..N), and the first occurrences of values in symbols'[i] come in consecutive increasing order. Returns N, the number of unique values in symbols[]. */ BROTLI_INTERNAL size_t FN(BrotliHistogramReindex)(MemoryManager* m, HistogramType* out, uint32_t* symbols, size_t length) CODE BROTLI_INTERNAL void FN(BrotliClusterHistograms)( MemoryManager* m, const HistogramType* in, const size_t in_size, size_t max_histograms, HistogramType* out, size_t* out_size, uint32_t* histogram_symbols) CODE #undef HistogramType