Mercurial > libavformat.hg
changeset 243:a315234e11eb libavformat
forgot to apply the palette component lookup table
author | tmmm |
---|---|
date | Thu, 11 Sep 2003 05:39:51 +0000 |
parents | 3c299d432ca4 |
children | 4d5d04d45230 |
files | wc3movie.c |
diffstat | 1 files changed, 7 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/wc3movie.c Wed Sep 10 22:44:30 2003 +0000 +++ b/wc3movie.c Thu Sep 11 05:39:51 2003 +0000 @@ -93,7 +93,7 @@ } 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 @@ 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 @@ /* 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;