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;