MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / HuffmanTree_makeFromFrequencies

Function HuffmanTree_makeFromFrequencies

src/lodepng.cpp:834–849  ·  view source on GitHub ↗

Create the Huffman tree given the symbol frequencies*/

Source from the content-addressed store, hash-verified

832
833/*Create the Huffman tree given the symbol frequencies*/
834static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies,
835 size_t mincodes, size_t numcodes, unsigned maxbitlen)
836{
837 unsigned error = 0;
838 while(!frequencies[numcodes - 1] && numcodes > mincodes) numcodes--; /*trim zeroes*/
839 tree->maxbitlen = maxbitlen;
840 tree->numcodes = (unsigned)numcodes; /*number of symbols*/
841 tree->lengths = (unsigned*)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned));
842 if(!tree->lengths) return 83; /*alloc fail*/
843 /*initialize all lengths to 0*/
844 memset(tree->lengths, 0, numcodes * sizeof(unsigned));
845
846 error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen);
847 if(!error) error = HuffmanTree_makeFromLengths2(tree);
848 return error;
849}
850
851static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index)
852{

Callers 1

deflateDynamicFunction · 0.85

Calls 3

lodepng_reallocFunction · 0.85

Tested by

no test coverage detected