MCPcopy Create free account
hub / github.com/ValveSoftware/openvr / HuffmanTree_makeFromFrequencies

Function HuffmanTree_makeFromFrequencies

samples/shared/lodepng.cpp:851–866  ·  view source on GitHub ↗

Create the Huffman tree given the symbol frequencies*/

Source from the content-addressed store, hash-verified

849
850/*Create the Huffman tree given the symbol frequencies*/
851static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies,
852 size_t mincodes, size_t numcodes, unsigned maxbitlen)
853{
854 unsigned error = 0;
855 while(!frequencies[numcodes - 1] && numcodes > mincodes) numcodes--; /*trim zeroes*/
856 tree->maxbitlen = maxbitlen;
857 tree->numcodes = (unsigned)numcodes; /*number of symbols*/
858 tree->lengths = (unsigned*)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned));
859 if(!tree->lengths) return 83; /*alloc fail*/
860 /*initialize all lengths to 0*/
861 memset(tree->lengths, 0, numcodes * sizeof(unsigned));
862
863 error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen);
864 if(!error) error = HuffmanTree_makeFromLengths2(tree);
865 return error;
866}
867
868static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index)
869{

Callers 1

deflateDynamicFunction · 0.85

Calls 3

lodepng_reallocFunction · 0.85

Tested by

no test coverage detected