From 7e5ef401b7465f347d2fd2c475a4dfc054004226 Mon Sep 17 00:00:00 2001 From: Mike Melanson Date: Thu, 11 Sep 2003 05:39:51 +0000 Subject: forgot to apply the palette component lookup table Originally committed as revision 2259 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/wc3movie.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'libavformat/wc3movie.c') diff --git a/libavformat/wc3movie.c b/libavformat/wc3movie.c index 2a8f929045..cdd8c8bdb5 100644 --- a/libavformat/wc3movie.c +++ b/libavformat/wc3movie.c @@ -93,7 +93,7 @@ typedef struct Wc3DemuxContext { } Wc3DemuxContext; /* bizarre palette lookup table */ -const unsigned char wc3_pal_lookup[] = { +static const unsigned char wc3_pal_lookup[] = { 0x00, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0E, 0x10, 0x12, 0x13, 0x15, 0x16, 0x18, 0x19, 0x1A, 0x1C, 0x1D, 0x1F, 0x20, 0x21, 0x23, 0x24, 0x25, @@ -154,7 +154,7 @@ static int wc3_read_header(AVFormatContext *s, int current_palette = 0; int bytes_to_read; int i; - int temp; + unsigned char rotate; /* default context members */ wc3->width = WC3_DEFAULT_WIDTH; @@ -225,9 +225,11 @@ static int wc3_read_header(AVFormatContext *s, /* transform the current palette in place */ for (i = current_palette * PALETTE_SIZE; i < (current_palette + 1) * PALETTE_SIZE; i++) { - /* rotate each palette component left by 2 */ - temp = wc3->palettes[i] << 2; - wc3->palettes[i] = (temp & 0xFF) | (temp >> 8); + /* rotate each palette component left by 2 and use the result + * as an index into the color component table */ + rotate = ((wc3->palettes[i] << 2) & 0xFF) | + ((wc3->palettes[i] >> 6) & 0xFF); + wc3->palettes[i] = wc3_pal_lookup[rotate]; } current_palette++; break; -- cgit v1.2.3