summaryrefslogtreecommitdiff
path: root/libavformat/wc3movie.c
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2003-09-11 05:39:51 +0000
committerMike Melanson <mike@multimedia.cx>2003-09-11 05:39:51 +0000
commit7e5ef401b7465f347d2fd2c475a4dfc054004226 (patch)
treef31e5d7be23ee950c9344943b4abb7bcaa6002ad /libavformat/wc3movie.c
parent541ae14095cf7757bc5034a6d09f9a41e385802d (diff)
forgot to apply the palette component lookup table
Originally committed as revision 2259 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/wc3movie.c')
-rw-r--r--libavformat/wc3movie.c12
1 files changed, 7 insertions, 5 deletions
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;