diff options
Diffstat (limited to 'c/enc/block_encoder_inc.h')
-rw-r--r-- | c/enc/block_encoder_inc.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/c/enc/block_encoder_inc.h b/c/enc/block_encoder_inc.h new file mode 100644 index 0000000..2a08f90 --- /dev/null +++ b/c/enc/block_encoder_inc.h @@ -0,0 +1,33 @@ +/* NOLINT(build/header_guard) */ +/* Copyright 2014 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 */ + +#define HistogramType FN(Histogram) + +/* Creates entropy codes for all block types and stores them to the bit + stream. */ +static void FN(BuildAndStoreEntropyCodes)(MemoryManager* m, BlockEncoder* self, + const HistogramType* histograms, const size_t histograms_size, + HuffmanTree* tree, size_t* storage_ix, uint8_t* storage) { + const size_t alphabet_size = self->alphabet_size_; + const size_t table_size = histograms_size * alphabet_size; + self->depths_ = BROTLI_ALLOC(m, uint8_t, table_size); + self->bits_ = BROTLI_ALLOC(m, uint16_t, table_size); + if (BROTLI_IS_OOM(m)) return; + + { + size_t i; + for (i = 0; i < histograms_size; ++i) { + size_t ix = i * alphabet_size; + BuildAndStoreHuffmanTree(&histograms[i].data_[0], alphabet_size, tree, + &self->depths_[ix], &self->bits_[ix], storage_ix, storage); + } + } +} + +#undef HistogramType |