Lines Matching refs:nCodes
85 HuffmanEncoder::HuffmanEncoder(const unsigned int *codeBits, unsigned int nCodes)
87 Initialize(codeBits, nCodes);
104 void HuffmanEncoder::GenerateCodeLengths(unsigned int *codeBits, unsigned int maxCodeBits, const unsigned int *codeCounts, size_t nCodes)
106 assert(nCodes > 0);
107 assert(nCodes <= ((size_t)1 << maxCodeBits));
110 SecBlockWithHint<HuffmanNode, 2*286> tree(nCodes);
111 for (i=0; i<nCodes; i++)
118 if (treeBegin == nCodes)
120 fill(codeBits, codeBits+nCodes, 0);
123 tree.resize(nCodes + nCodes - treeBegin - 1);
125 size_t leastLeaf = treeBegin, leastInterior = nCodes;
126 for (i=nCodes; i<tree.size(); i++)
129 least = (leastLeaf == nCodes || (leastInterior < i && tree[leastInterior].freq < tree[leastLeaf].freq)) ? leastInterior++ : leastLeaf++;
132 least = (leastLeaf == nCodes || (leastInterior < i && tree[leastInterior].freq < tree[leastLeaf].freq)) ? leastInterior++ : leastLeaf++;
139 for (i=tree.size()-2; i>=nCodes; i--)
144 for (i=treeBegin; i<nCodes; i++)
167 for (i=treeBegin; i<nCodes; i++)
177 void HuffmanEncoder::Initialize(const unsigned int *codeBits, unsigned int nCodes)
179 assert(nCodes > 0);
180 unsigned int maxCodeBits = *max_element(codeBits, codeBits+nCodes);
187 for (i=0; i<nCodes; i++)
200 m_valueToCode.resize(nCodes);
201 for (i=0; i<nCodes; i++)