Fix name collisions with libwebp.

Prefix all externally visible function names with Brotli and
make all other functions static.
This commit is contained in:
Zoltan Szabadka
2013-10-17 12:41:36 +02:00
parent 7efdf8e114
commit 9c62eb3e1e
3 changed files with 51 additions and 51 deletions
+22 -21
View File
@@ -141,8 +141,8 @@ static int ReadHuffmanCodeLengths(
int prev_code_len = kDefaultCodeLength; int prev_code_len = kDefaultCodeLength;
HuffmanTree tree; HuffmanTree tree;
if (!HuffmanTreeBuildImplicit(&tree, code_length_code_lengths, if (!BrotliHuffmanTreeBuildImplicit(&tree, code_length_code_lengths,
CODE_LENGTH_CODES)) { CODE_LENGTH_CODES)) {
printf("[ReadHuffmanCodeLengths] Building code length tree failed: "); printf("[ReadHuffmanCodeLengths] Building code length tree failed: ");
PrintIntVector(code_length_code_lengths, CODE_LENGTH_CODES); PrintIntVector(code_length_code_lengths, CODE_LENGTH_CODES);
return 0; return 0;
@@ -199,7 +199,7 @@ static int ReadHuffmanCodeLengths(
ok = 1; ok = 1;
End: End:
HuffmanTreeRelease(&tree); BrotliHuffmanTreeRelease(&tree);
return ok; return ok;
} }
@@ -281,8 +281,8 @@ static int ReadHuffmanCode(int alphabet_size,
BROTLI_LOG_UINT(first_symbol_len_code); BROTLI_LOG_UINT(first_symbol_len_code);
BROTLI_LOG_UINT(symbols[0]); BROTLI_LOG_UINT(symbols[0]);
BROTLI_LOG_UINT(symbols[1]); BROTLI_LOG_UINT(symbols[1]);
ok = HuffmanTreeBuildExplicit(tree, code_lengths, codes, symbols, ok = BrotliHuffmanTreeBuildExplicit(tree, code_lengths, codes, symbols,
alphabet_size, num_symbols); alphabet_size, num_symbols);
if (!ok) { if (!ok) {
printf("[ReadHuffmanCode] HuffmanTreeBuildExplicit failed: "); printf("[ReadHuffmanCode] HuffmanTreeBuildExplicit failed: ");
PrintIntVector(code_lengths, num_symbols); PrintIntVector(code_lengths, num_symbols);
@@ -312,7 +312,7 @@ static int ReadHuffmanCode(int alphabet_size,
code_lengths, br) && code_lengths, br) &&
RepairHuffmanCodeLengths(alphabet_size, code_lengths); RepairHuffmanCodeLengths(alphabet_size, code_lengths);
if (ok) { if (ok) {
ok = HuffmanTreeBuildImplicit(tree, code_lengths, alphabet_size); ok = BrotliHuffmanTreeBuildImplicit(tree, code_lengths, alphabet_size);
if (!ok) { if (!ok) {
printf("[ReadHuffmanCode] HuffmanTreeBuildImplicit failed: "); printf("[ReadHuffmanCode] HuffmanTreeBuildImplicit failed: ");
PrintIntVector(code_lengths, alphabet_size); PrintIntVector(code_lengths, alphabet_size);
@@ -422,22 +422,23 @@ typedef struct {
HuffmanTree* htrees; HuffmanTree* htrees;
} HuffmanTreeGroup; } HuffmanTreeGroup;
void HuffmanTreeGroupInit(HuffmanTreeGroup* group, int alphabet_size, static void HuffmanTreeGroupInit(HuffmanTreeGroup* group, int alphabet_size,
int ntrees) { int ntrees) {
group->alphabet_size = alphabet_size; group->alphabet_size = alphabet_size;
group->num_htrees = ntrees; group->num_htrees = ntrees;
group->htrees = (HuffmanTree*)malloc(sizeof(HuffmanTree) * ntrees); group->htrees = (HuffmanTree*)malloc(sizeof(HuffmanTree) * ntrees);
} }
void HuffmanTreeGroupRelease(HuffmanTreeGroup* group) { static void HuffmanTreeGroupRelease(HuffmanTreeGroup* group) {
int i; int i;
for (i = 0; i < group->num_htrees; ++i) { for (i = 0; i < group->num_htrees; ++i) {
HuffmanTreeRelease(&group->htrees[i]); BrotliHuffmanTreeRelease(&group->htrees[i]);
} }
free(group->htrees); free(group->htrees);
} }
int HuffmanTreeGroupDecode(HuffmanTreeGroup* group, BrotliBitReader* br) { static int HuffmanTreeGroupDecode(HuffmanTreeGroup* group,
BrotliBitReader* br) {
int i; int i;
for (i = 0; i < group->num_htrees; ++i) { for (i = 0; i < group->num_htrees; ++i) {
ReadHuffmanCode(group->alphabet_size, &group->htrees[i], br); ReadHuffmanCode(group->alphabet_size, &group->htrees[i], br);
@@ -445,13 +446,13 @@ int HuffmanTreeGroupDecode(HuffmanTreeGroup* group, BrotliBitReader* br) {
return 1; return 1;
} }
int DecodeContextMap(int num_block_types, static int DecodeContextMap(int num_block_types,
int stream_type, int stream_type,
int* context_mode, int* context_mode,
int* contexts_per_block, int* contexts_per_block,
int* num_htrees, int* num_htrees,
uint8_t** context_map, uint8_t** context_map,
BrotliBitReader* br) { BrotliBitReader* br) {
int use_context = BrotliReadBits(br, 1); int use_context = BrotliReadBits(br, 1);
if (!use_context) { if (!use_context) {
*context_mode = 0; *context_mode = 0;
@@ -522,7 +523,7 @@ int DecodeContextMap(int num_block_types,
(*context_map)[i] = ReadSymbol(&tree_index_htree, br); (*context_map)[i] = ReadSymbol(&tree_index_htree, br);
} }
} }
HuffmanTreeRelease(&tree_index_htree); BrotliHuffmanTreeRelease(&tree_index_htree);
if (BrotliReadBits(br, 1)) { if (BrotliReadBits(br, 1)) {
InverseMoveToFrontTransform(*context_map, context_map_size); InverseMoveToFrontTransform(*context_map, context_map_size);
} }
@@ -775,8 +776,8 @@ int BrotliDecompressBuffer(size_t encoded_size,
free(dist_context_map); free(dist_context_map);
for (i = 0; i < 3; ++i) { for (i = 0; i < 3; ++i) {
HuffmanTreeGroupRelease(&hgroup[i]); HuffmanTreeGroupRelease(&hgroup[i]);
HuffmanTreeRelease(&block_type_trees[i]); BrotliHuffmanTreeRelease(&block_type_trees[i]);
HuffmanTreeRelease(&block_len_trees[i]); BrotliHuffmanTreeRelease(&block_len_trees[i]);
} }
} }
+19 -14
View File
@@ -72,7 +72,7 @@ static int TreeInit(HuffmanTree* const tree, int num_leaves) {
return 1; return 1;
} }
void HuffmanTreeRelease(HuffmanTree* const tree) { void BrotliHuffmanTreeRelease(HuffmanTree* const tree) {
if (tree != NULL) { if (tree != NULL) {
free(tree->root_); free(tree->root_);
tree->root_ = NULL; tree->root_ = NULL;
@@ -81,8 +81,12 @@ void HuffmanTreeRelease(HuffmanTree* const tree) {
} }
} }
int HuffmanCodeLengthsToCodes(const int* const code_lengths, // Utility: converts Huffman code lengths to corresponding Huffman codes.
int code_lengths_size, int* const huff_codes) { // 'huff_codes' should be pre-allocated.
// Returns false in case of error (memory allocation, invalid codes).
static int HuffmanCodeLengthsToCodes(const int* const code_lengths,
int code_lengths_size,
int* const huff_codes) {
int symbol; int symbol;
int code_len; int code_len;
int code_length_hist[MAX_ALLOWED_CODE_LENGTH + 1] = { 0 }; int code_length_hist[MAX_ALLOWED_CODE_LENGTH + 1] = { 0 };
@@ -201,9 +205,9 @@ static int TreeAddSymbol(HuffmanTree* const tree,
return 1; return 1;
} }
int HuffmanTreeBuildImplicit(HuffmanTree* const tree, int BrotliHuffmanTreeBuildImplicit(HuffmanTree* const tree,
const int* const code_lengths, const int* const code_lengths,
int code_lengths_size) { int code_lengths_size) {
int symbol; int symbol;
int num_symbols = 0; int num_symbols = 0;
int root_symbol = 0; int root_symbol = 0;
@@ -227,7 +231,7 @@ int HuffmanTreeBuildImplicit(HuffmanTree* const tree,
if (num_symbols == 1) { // Trivial case. if (num_symbols == 1) { // Trivial case.
const int max_symbol = code_lengths_size; const int max_symbol = code_lengths_size;
if (root_symbol < 0 || root_symbol >= max_symbol) { if (root_symbol < 0 || root_symbol >= max_symbol) {
HuffmanTreeRelease(tree); BrotliHuffmanTreeRelease(tree);
return 0; return 0;
} }
return TreeAddSymbol(tree, root_symbol, 0, 0); return TreeAddSymbol(tree, root_symbol, 0, 0);
@@ -255,16 +259,17 @@ int HuffmanTreeBuildImplicit(HuffmanTree* const tree,
End: End:
free(codes); free(codes);
ok = ok && IsFull(tree); ok = ok && IsFull(tree);
if (!ok) HuffmanTreeRelease(tree); if (!ok) BrotliHuffmanTreeRelease(tree);
return ok; return ok;
} }
} }
int HuffmanTreeBuildExplicit(HuffmanTree* const tree, int BrotliHuffmanTreeBuildExplicit(HuffmanTree* const tree,
const int* const code_lengths, const int* const code_lengths,
const int* const codes, const int* const codes,
const int* const symbols, int max_symbol, const int* const symbols,
int num_symbols) { int max_symbol,
int num_symbols) {
int ok = 0; int ok = 0;
int i; int i;
@@ -290,7 +295,7 @@ int HuffmanTreeBuildExplicit(HuffmanTree* const tree,
ok = 1; ok = 1;
End: End:
ok = ok && IsFull(tree); ok = ok && IsFull(tree);
if (!ok) HuffmanTreeRelease(tree); if (!ok) BrotliHuffmanTreeRelease(tree);
return ok; return ok;
} }
+10 -16
View File
@@ -60,29 +60,23 @@ static BROTLI_INLINE const HuffmanTreeNode* HuffmanTreeNextNode(
// Releases the nodes of the Huffman tree. // Releases the nodes of the Huffman tree.
// Note: It does NOT free 'tree' itself. // Note: It does NOT free 'tree' itself.
void HuffmanTreeRelease(HuffmanTree* const tree); void BrotliHuffmanTreeRelease(HuffmanTree* const tree);
// Builds Huffman tree assuming code lengths are implicitly in symbol order. // Builds Huffman tree assuming code lengths are implicitly in symbol order.
// Returns false in case of error (invalid tree or memory error). // Returns false in case of error (invalid tree or memory error).
int HuffmanTreeBuildImplicit(HuffmanTree* const tree, int BrotliHuffmanTreeBuildImplicit(HuffmanTree* const tree,
const int* const code_lengths, const int* const code_lengths,
int code_lengths_size); int code_lengths_size);
// Build a Huffman tree with explicitly given lists of code lengths, codes // Build a Huffman tree with explicitly given lists of code lengths, codes
// and symbols. Verifies that all symbols added are smaller than max_symbol. // and symbols. Verifies that all symbols added are smaller than max_symbol.
// Returns false in case of an invalid symbol, invalid tree or memory error. // Returns false in case of an invalid symbol, invalid tree or memory error.
int HuffmanTreeBuildExplicit(HuffmanTree* const tree, int BrotliHuffmanTreeBuildExplicit(HuffmanTree* const tree,
const int* const code_lengths, const int* const code_lengths,
const int* const codes, const int* const codes,
const int* const symbols, int max_symbol, const int* const symbols,
int num_symbols); int max_symbol,
int num_symbols);
// Utility: converts Huffman code lengths to corresponding Huffman codes.
// 'huff_codes' should be pre-allocated.
// Returns false in case of error (memory allocation, invalid codes).
int HuffmanCodeLengthsToCodes(const int* const code_lengths,
int code_lengths_size, int* const huff_codes);
#if defined(__cplusplus) || defined(c_plusplus) #if defined(__cplusplus) || defined(c_plusplus)
} // extern "C" } // extern "C"