VP8LEnc: remove use of BitsLog2Ceiling()

was only used once. Better fall back for Log2Floor.

Change-Id: Ibcc26505440971bffe62ba6aca3d179ca85791d4
This commit is contained in:
Pascal Massimino 2017-03-20 01:08:14 -07:00
parent ec5036e475
commit 28c37ebd5a
2 changed files with 10 additions and 13 deletions

View File

@ -93,14 +93,6 @@ static WEBP_INLINE float VP8LFastSLog2(uint32_t v) {
// -----------------------------------------------------------------------------
// PrefixEncode()
static WEBP_INLINE int VP8LBitsLog2Ceiling(uint32_t n) {
const int log_floor = BitsLog2Floor(n);
if (n == (n & ~(n - 1))) { // zero or a power of two.
return log_floor;
}
return log_floor + 1;
}
// Splitting of distance and length codes into prefixes and
// extra bits. The prefixes are encoded with an entropy code
// while the extra bits are stored just as normal bits.

View File

@ -600,11 +600,16 @@ static void StoreFullHuffmanCode(VP8LBitWriter* const bw,
length = write_trimmed_length ? trimmed_length : num_tokens;
VP8LPutBits(bw, write_trimmed_length, 1);
if (write_trimmed_length) {
const int nbits = VP8LBitsLog2Ceiling(trimmed_length - 1);
const int nbitpairs = (nbits == 0) ? 1 : (nbits + 1) / 2;
VP8LPutBits(bw, nbitpairs - 1, 3);
assert(trimmed_length >= 2);
VP8LPutBits(bw, trimmed_length - 2, nbitpairs * 2);
if (trimmed_length == 2) {
VP8LPutBits(bw, 0, 3 + 2); // nbitpairs=1, trimmed_length=2
} else {
const int nbits = BitsLog2Floor(trimmed_length - 2);
const int nbitpairs = nbits / 2 + 1;
assert(trimmed_length > 2);
assert(nbitpairs - 1 < 8);
VP8LPutBits(bw, nbitpairs - 1, 3);
VP8LPutBits(bw, trimmed_length - 2, nbitpairs * 2);
}
}
StoreHuffmanTreeToBitMask(bw, tokens, length, &huffman_code);
}