From afa3450c11d968f73f0230b8756df6ee660d9a84 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 18 May 2013 17:03:18 +0200 Subject: [PATCH] Fix the bug in ApplyPalette. The auto-infer logic of detecting the 'Alpha' use case (via check '(palette[i] & 0x00ff00ffu) != 0' is failing for this corner case image with all black pixels (rgb = 0) and different Alpha values. -> switch generic use-LUT detection Change-Id: I982a8b28c8bcc43e3dc68ac358f978a4bcc14c36 --- src/enc/vp8l.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/enc/vp8l.c b/src/enc/vp8l.c index 1797b7cc..6422c544 100644 --- a/src/enc/vp8l.c +++ b/src/enc/vp8l.c @@ -816,15 +816,15 @@ static void ApplyPalette(uint32_t* src, uint32_t* dst, const uint32_t* palette, int palette_size, int width, int height, int xbits, uint8_t* row) { int i, x, y; - int is_alpha = 1; + int use_LUT = 1; for (i = 0; i < palette_size; ++i) { - if ((palette[i] & 0x00ff00ffu) != 0) { - is_alpha = 0; + if ((palette[i] & 0xffff00ffu) != 0) { + use_LUT = 0; break; } } - if (is_alpha) { + if (use_LUT) { int inv_palette[MAX_PALETTE_SIZE] = { 0 }; for (i = 0; i < palette_size; ++i) { const int color = (palette[i] >> 8) & 0xff;