100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
-
-
+
+
|
for (uint16_t i = 0; i <= maxCode; i++) {
uint8_t length = lengths[i];
if (length > 0)
insertTree(tree, nextCode[length]++, length, i);
}
} @finally {
of_free(lengthCount);
of_free(nextCode);
free(lengthCount);
free(nextCode);
}
return tree;
}
struct of_huffman_tree *
of_huffman_tree_construct_single(uint16_t value)
|
124
125
126
127
128
129
130
131
132
|
124
125
126
127
128
129
130
131
132
|
-
+
|
void
of_huffman_tree_release(struct of_huffman_tree *tree)
{
for (uint_fast8_t i = 0; i < 2; i++)
if OF_LIKELY (tree->leaves[i] != NULL)
of_huffman_tree_release(tree->leaves[i]);
of_free(tree);
free(tree);
}
|