mirror of
https://github.com/webmproject/libwebp.git
synced 2025-07-13 06:24:27 +02:00
Few more HuffmanTreeToken conversions.
Change-Id: I932b5368d279f83c462c7d916978dab3e81d7709
This commit is contained in:
@ -349,20 +349,19 @@ static HuffmanTreeToken* CodeRepeatedZeros(int repetitions,
|
||||
return tokens;
|
||||
}
|
||||
|
||||
int VP8LCreateCompressedHuffmanTree(const uint8_t* const depth,
|
||||
int depth_size,
|
||||
HuffmanTreeToken* tokens,
|
||||
int max_tokens) {
|
||||
int VP8LCreateCompressedHuffmanTree(const HuffmanTreeCode* const tree,
|
||||
HuffmanTreeToken* tokens, int max_tokens) {
|
||||
HuffmanTreeToken* const starting_token = tokens;
|
||||
HuffmanTreeToken* const ending_token = tokens + max_tokens;
|
||||
const int depth_size = tree->num_symbols;
|
||||
int prev_value = 8; // 8 is the initial value for rle.
|
||||
int i = 0;
|
||||
assert(tokens != NULL);
|
||||
while (i < depth_size) {
|
||||
const int value = depth[i];
|
||||
const int value = tree->code_lengths[i];
|
||||
int k = i + 1;
|
||||
int runs;
|
||||
while (k < depth_size && depth[k] == value) ++k;
|
||||
while (k < depth_size && tree->code_lengths[k] == value) ++k;
|
||||
runs = k - i;
|
||||
if (value == 0) {
|
||||
tokens = CodeRepeatedZeros(runs, tokens);
|
||||
|
@ -26,11 +26,6 @@ typedef struct {
|
||||
uint8_t extra_bits; // extra bits for escape codes
|
||||
} HuffmanTreeToken;
|
||||
|
||||
// Turn the Huffman tree into a token sequence.
|
||||
// Returns the number of tokens used.
|
||||
int VP8LCreateCompressedHuffmanTree(const uint8_t* const depth, int depth_size,
|
||||
HuffmanTreeToken* tokens, int max_tokens);
|
||||
|
||||
// Struct to represent the tree codes (depth and bits array).
|
||||
typedef struct {
|
||||
int num_symbols; // Number of symbols.
|
||||
@ -38,6 +33,11 @@ typedef struct {
|
||||
uint16_t* codes; // Symbol Codes.
|
||||
} HuffmanTreeCode;
|
||||
|
||||
// Turn the Huffman tree into a token sequence.
|
||||
// Returns the number of tokens used.
|
||||
int VP8LCreateCompressedHuffmanTree(const HuffmanTreeCode* const tree,
|
||||
HuffmanTreeToken* tokens, int max_tokens);
|
||||
|
||||
// Create an optimized tree, and tokenize it.
|
||||
int VP8LCreateHuffmanTree(int* const histogram, int tree_depth_limit,
|
||||
HuffmanTreeCode* const tree);
|
||||
|
Reference in New Issue
Block a user