Beispiel #1
0
static unsigned int
codeword_total_leaf_nodes(struct vorbis_codeword* tree) {
    if (tree == NULL) {
        return 0;
    } else if (tree->is_leaf) {
        return 1;
    } else {
        return (codeword_total_leaf_nodes(tree->bit_0) +
                codeword_total_leaf_nodes(tree->bit_1));
    }
}
static struct huffman_frequency*
codeword_tree_to_frequencies(struct vorbis_codeword* tree) {
    struct huffman_frequency* frequencies =
        malloc(sizeof(struct huffman_frequency) *
               (codeword_total_leaf_nodes(tree) + 1));
    int index = 0;

    codeword_tree_to_frequencies_(tree, frequencies, &index);
    frequencies[index].length = 0;
    return frequencies;
}