| /* 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 |