From 77d4c7e337927c93e7ea49d20f4e676b4613bd0a Mon Sep 17 00:00:00 2001 From: skal Date: Thu, 28 Aug 2014 18:08:00 -0700 Subject: [PATCH] address cosmetic comments from patch #71380 Change-Id: Iaba301b9e77aa4febe0efe1e6016fab42d5589f3 --- src/dec/vp8l.c | 15 +++++++-------- src/utils/huffman.c | 20 ++++++++------------ src/utils/huffman.h | 3 +-- 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/dec/vp8l.c b/src/dec/vp8l.c index 4529be2c..88d5b07d 100644 --- a/src/dec/vp8l.c +++ b/src/dec/vp8l.c @@ -78,7 +78,8 @@ static const uint8_t kCodeToPlane[CODE_TO_PLANE_CODES] = { // respectively. Size of green alphabet depends on color cache size and is equal // to 256 (green component values) + 24 (length prefix values) // + color_cache_size (between 0 and 2048). -// All values computed for 8-bit first level lookup with tests/tools/enough.cc. +// All values computed for 8-bit first level lookup with Mark Adler's tool: +// http://www.hdfgroup.org/ftp/lib-external/zlib/zlib-1.2.5/examples/enough.c #define FIXED_TABLE_SIZE (630 * 3 + 410) static const int kTableSize[12] = { FIXED_TABLE_SIZE + 654, @@ -203,15 +204,13 @@ static int ReadHuffmanCodeLengths( if (!VP8LBuildHuffmanTable(table, LENGTHS_TABLE_BITS, code_length_code_lengths, NUM_CODE_LENGTH_CODES)) { - dec->status_ = VP8_STATUS_BITSTREAM_ERROR; - return 0; + goto End; } if (VP8LReadBits(br, 1)) { // use length const int length_nbits = 2 + 2 * VP8LReadBits(br, 3); max_symbol = 2 + VP8LReadBits(br, length_nbits); if (max_symbol > num_symbols) { - dec->status_ = VP8_STATUS_BITSTREAM_ERROR; goto End; } } else { @@ -220,11 +219,11 @@ static int ReadHuffmanCodeLengths( symbol = 0; while (symbol < num_symbols) { - const HuffmanCode* p = table; + const HuffmanCode* p; int code_len; if (max_symbol-- == 0) break; VP8LFillBitWindow(br); - p += VP8LPrefetchBits(br) & LENGTHS_TABLE_MASK; + p = &table[VP8LPrefetchBits(br) & LENGTHS_TABLE_MASK]; VP8LSetBitPos(br, br->bit_pos_ + p->bits); code_len = p->value; if (code_len < kCodeLengthLiterals) { @@ -237,7 +236,6 @@ static int ReadHuffmanCodeLengths( const int repeat_offset = kCodeLengthRepeatOffsets[slot]; int repeat = VP8LReadBits(br, extra_bits) + repeat_offset; if (symbol + repeat > num_symbols) { - dec->status_ = VP8_STATUS_BITSTREAM_ERROR; goto End; } else { const int length = use_prev ? prev_code_len : 0; @@ -248,6 +246,7 @@ static int ReadHuffmanCodeLengths( ok = 1; End: + dec->status_ = VP8_STATUS_BITSTREAM_ERROR; return ok; } @@ -348,7 +347,7 @@ static int ReadHuffmanCodes(VP8LDecoder* const dec, int xsize, int ysize, } huffman_tables = (HuffmanCode*)WebPSafeMalloc(num_htree_groups * table_size, - sizeof(HuffmanCode)); + sizeof(*huffman_tables)); htree_groups = VP8LHtreeGroupsNew(num_htree_groups); code_lengths = (int*)WebPSafeCalloc((uint64_t)max_alphabet_size, sizeof(*code_lengths)); diff --git a/src/utils/huffman.c b/src/utils/huffman.c index 187a758f..d57376aa 100644 --- a/src/utils/huffman.c +++ b/src/utils/huffman.c @@ -76,17 +76,16 @@ static WEBP_INLINE int NextTableBitSize(const int* const count, } int VP8LBuildHuffmanTable(HuffmanCode* const root_table, int root_bits, - const int* const code_lengths, - int code_lengths_size) { - HuffmanCode* table; // next available space in table - int len; // current code length - int symbol; // symbol index in original or sorted table - int total_size; // sum of root table size and 2nd level table sizes - int* sorted = NULL; // symbols sorted by code length + const int code_lengths[], int code_lengths_size) { + HuffmanCode* table = root_table; // next available space in table + int total_size = 1 << root_bits; // total size root table + 2nd level table + int* sorted = NULL; // symbols sorted by code length + int len; // current code length + int symbol; // symbol index in original or sorted table + // number of codes of each length: int count[MAX_ALLOWED_CODE_LENGTH + 1] = { 0 }; - // number of codes of each length + // offsets in sorted table for each length: int offset[MAX_ALLOWED_CODE_LENGTH + 1]; - // offsets in sorted table for each length assert(code_lengths_size != 0); assert(code_lengths != NULL); @@ -128,9 +127,6 @@ int VP8LBuildHuffmanTable(HuffmanCode* const root_table, int root_bits, } } - table = root_table; - total_size = 1 << root_bits; - // Special case code with only one value. if (offset[MAX_ALLOWED_CODE_LENGTH] == 1) { HuffmanCode code; diff --git a/src/utils/huffman.h b/src/utils/huffman.h index b4bd0b71..40235d78 100644 --- a/src/utils/huffman.h +++ b/src/utils/huffman.h @@ -53,8 +53,7 @@ void VP8LHtreeGroupsFree(HTreeGroup* const htree_groups); // Returns built table size or 0 in case of error (invalid tree or // memory error). int VP8LBuildHuffmanTable(HuffmanCode* const root_table, int root_bits, - const int* const code_lengths, - int code_lengths_size); + const int code_lengths[], int code_lengths_size); #ifdef __cplusplus } // extern "C"