From 75806cd73c45278105ac4a3326ba7c80e86618ba Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Wed, 1 Jan 2014 19:48:17 +0100 Subject: VIDEO: Fix Smacker palette upscaling to match Multimedia Wiki The Multimedia Wiki suggests using a lookup table, but this should produce the same result. --- video/smk_decoder.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'video/smk_decoder.cpp') diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp index 3dbcebcde4..868050e988 100644 --- a/video/smk_decoder.cpp +++ b/video/smk_decoder.cpp @@ -732,10 +732,11 @@ void SmackerDecoder::SmackerVideoTrack::unpackPalette(Common::SeekableReadStream assert(g < 0xc0 && b < 0xc0); - // upscale to full 8-bit color values by multiplying by 4 - *pal++ = b * 4; - *pal++ = g * 4; - *pal++ = r * 4; + // upscale to full 8-bit color values. The Multimedia Wiki suggests + // a lookup table for this, but this should produce the same result. + *pal++ = (b * 4 + b / 16); + *pal++ = (g * 4 + g / 16); + *pal++ = (r * 4 + r / 16); } } -- cgit v1.2.3 From 84d4e97d08f78ee282ba3275fe0c8a0a1d24daae Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Wed, 1 Jan 2014 19:55:04 +0100 Subject: VIDEO: Rename variables and remove pointless assertion It's RGB, not BGR apparently. This seems to contradict the Multimedia Wiki, but not reality. --- video/smk_decoder.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'video/smk_decoder.cpp') diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp index 868050e988..0247fe5dc9 100644 --- a/video/smk_decoder.cpp +++ b/video/smk_decoder.cpp @@ -726,17 +726,15 @@ void SmackerDecoder::SmackerVideoTrack::unpackPalette(Common::SeekableReadStream } else { // top 2 bits are 00 sz++; // get the lower 6 bits for each component (0x3f = 00111111) - byte b = b0 & 0x3f; + byte r = b0 & 0x3f; byte g = (*p++) & 0x3f; - byte r = (*p++) & 0x3f; - - assert(g < 0xc0 && b < 0xc0); + byte b = (*p++) & 0x3f; // upscale to full 8-bit color values. The Multimedia Wiki suggests // a lookup table for this, but this should produce the same result. - *pal++ = (b * 4 + b / 16); - *pal++ = (g * 4 + g / 16); *pal++ = (r * 4 + r / 16); + *pal++ = (g * 4 + g / 16); + *pal++ = (b * 4 + b / 16); } } -- cgit v1.2.3