32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
tree->leaves[0] = tree->leaves[1] = NULL;
tree->value = 0xFFFF;
return tree;
}
static void
insertTree(OFHuffmanTree *tree, uint16_t code, uint8_t length, uint16_t value)
{
while (length > 0) {
uint8_t bit;
length--;
bit = (code & (1u << length)) >> length;
|
|
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
tree->leaves[0] = tree->leaves[1] = NULL;
tree->value = 0xFFFF;
return tree;
}
static void
treeInsert(OFHuffmanTree *tree, uint16_t code, uint8_t length, uint16_t value)
{
while (length > 0) {
uint8_t bit;
length--;
bit = (code & (1u << length)) >> length;
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
tree = newTree();
for (uint16_t i = 0; i <= maxCode; i++) {
uint8_t length = lengths[i];
if (length > 0)
insertTree(tree, nextCode[length]++, length, i);
}
} @finally {
OFFreeMemory(lengthCount);
OFFreeMemory(nextCode);
}
return tree;
|
|
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
tree = newTree();
for (uint16_t i = 0; i <= maxCode; i++) {
uint8_t length = lengths[i];
if (length > 0)
treeInsert(tree, nextCode[length]++, length, i);
}
} @finally {
OFFreeMemory(lengthCount);
OFFreeMemory(nextCode);
}
return tree;
|