| Index: third_party/brotli/enc/histogram.h
|
| diff --git a/third_party/brotli/enc/histogram.h b/third_party/brotli/enc/histogram.h
|
| index a1153c859a471ef2ac124a69ed53dd9ba8c8e84b..2161574b3bbca9181667b7a76c36be022147a77f 100644
|
| --- a/third_party/brotli/enc/histogram.h
|
| +++ b/third_party/brotli/enc/histogram.h
|
| @@ -4,91 +4,57 @@
|
| See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
| */
|
|
|
| -// Models the histograms of literals, commands and distance codes.
|
| +/* Models the histograms of literals, commands and distance codes. */
|
|
|
| #ifndef BROTLI_ENC_HISTOGRAM_H_
|
| #define BROTLI_ENC_HISTOGRAM_H_
|
|
|
| -#include <cstring>
|
| -#include <limits>
|
| -#include <vector>
|
| -#include "./context.h"
|
| -#include "./command.h"
|
| -#include "./fast_log.h"
|
| -#include "./prefix.h"
|
| -#include "./types.h"
|
| -
|
| -namespace brotli {
|
| -
|
| -struct BlockSplit;
|
| -
|
| -// A simple container for histograms of data in blocks.
|
| -template<int kDataSize>
|
| -struct Histogram {
|
| - Histogram(void) {
|
| - Clear();
|
| - }
|
| - void Clear(void) {
|
| - memset(data_, 0, sizeof(data_));
|
| - total_count_ = 0;
|
| - bit_cost_ = std::numeric_limits<double>::infinity();
|
| - }
|
| - void Add(size_t val) {
|
| - ++data_[val];
|
| - ++total_count_;
|
| - }
|
| - void Remove(size_t val) {
|
| - --data_[val];
|
| - --total_count_;
|
| - }
|
| - template<typename DataType>
|
| - void Add(const DataType *p, size_t n) {
|
| - total_count_ += n;
|
| - n += 1;
|
| - while(--n) ++data_[*p++];
|
| - }
|
| - void AddHistogram(const Histogram& v) {
|
| - total_count_ += v.total_count_;
|
| - for (size_t i = 0; i < kDataSize; ++i) {
|
| - data_[i] += v.data_[i];
|
| - }
|
| - }
|
| -
|
| - uint32_t data_[kDataSize];
|
| - size_t total_count_;
|
| - double bit_cost_;
|
| -};
|
| +#include <string.h> /* memset */
|
|
|
| -// Literal histogram.
|
| -typedef Histogram<256> HistogramLiteral;
|
| -// Prefix histograms.
|
| -typedef Histogram<kNumCommandPrefixes> HistogramCommand;
|
| -typedef Histogram<kNumDistancePrefixes> HistogramDistance;
|
| -typedef Histogram<kNumBlockLenPrefixes> HistogramBlockLength;
|
| -// Context map histogram, 256 Huffman tree indexes + 16 run length codes.
|
| -typedef Histogram<272> HistogramContextMap;
|
| -// Block type histogram, 256 block types + 2 special symbols.
|
| -typedef Histogram<258> HistogramBlockType;
|
| -
|
| -static const size_t kLiteralContextBits = 6;
|
| -static const size_t kDistanceContextBits = 2;
|
| -
|
| -void BuildHistograms(
|
| - const Command* cmds,
|
| - const size_t num_commands,
|
| - const BlockSplit& literal_split,
|
| - const BlockSplit& insert_and_copy_split,
|
| - const BlockSplit& dist_split,
|
| - const uint8_t* ringbuffer,
|
| - size_t pos,
|
| - size_t mask,
|
| - uint8_t prev_byte,
|
| - uint8_t prev_byte2,
|
| - const std::vector<ContextType>& context_modes,
|
| - std::vector<HistogramLiteral>* literal_histograms,
|
| - std::vector<HistogramCommand>* insert_and_copy_histograms,
|
| - std::vector<HistogramDistance>* copy_dist_histograms);
|
| -
|
| -} // namespace brotli
|
| -
|
| -#endif // BROTLI_ENC_HISTOGRAM_H_
|
| +#include "../common/constants.h"
|
| +#include <brotli/types.h>
|
| +#include "./block_splitter.h"
|
| +#include "./command.h"
|
| +#include "./context.h"
|
| +#include "./port.h"
|
| +
|
| +#if defined(__cplusplus) || defined(c_plusplus)
|
| +extern "C" {
|
| +#endif
|
| +
|
| +#define FN(X) X ## Literal
|
| +#define DATA_SIZE BROTLI_NUM_LITERAL_SYMBOLS
|
| +#define DataType uint8_t
|
| +#include "./histogram_inc.h" /* NOLINT(build/include) */
|
| +#undef DataType
|
| +#undef DATA_SIZE
|
| +#undef FN
|
| +
|
| +#define FN(X) X ## Command
|
| +#define DataType uint16_t
|
| +#define DATA_SIZE BROTLI_NUM_COMMAND_SYMBOLS
|
| +#include "./histogram_inc.h" /* NOLINT(build/include) */
|
| +#undef DATA_SIZE
|
| +#undef FN
|
| +
|
| +#define FN(X) X ## Distance
|
| +#define DATA_SIZE BROTLI_NUM_DISTANCE_SYMBOLS
|
| +#include "./histogram_inc.h" /* NOLINT(build/include) */
|
| +#undef DataType
|
| +#undef DATA_SIZE
|
| +#undef FN
|
| +
|
| +BROTLI_INTERNAL void BrotliBuildHistogramsWithContext(
|
| + const Command* cmds, const size_t num_commands,
|
| + const BlockSplit* literal_split, const BlockSplit* insert_and_copy_split,
|
| + const BlockSplit* dist_split, const uint8_t* ringbuffer, size_t pos,
|
| + size_t mask, uint8_t prev_byte, uint8_t prev_byte2,
|
| + const ContextType* context_modes, HistogramLiteral* literal_histograms,
|
| + HistogramCommand* insert_and_copy_histograms,
|
| + HistogramDistance* copy_dist_histograms);
|
| +
|
| +#if defined(__cplusplus) || defined(c_plusplus)
|
| +} /* extern "C" */
|
| +#endif
|
| +
|
| +#endif /* BROTLI_ENC_HISTOGRAM_H_ */
|
|
|