From cdbe3798d20db744f458cb3f3ad6ed53dae0f4d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= Date: Sat, 11 Apr 2009 20:08:16 +0000 Subject: [PATCH] Explain the purpose of the wc3_pal_lookup and the formula that was used to calculate it. Originally committed as revision 18445 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/wc3movie.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libavformat/wc3movie.c b/libavformat/wc3movie.c index 4d2c88a647..8e5dd38c0d 100644 --- a/libavformat/wc3movie.c +++ b/libavformat/wc3movie.c @@ -72,7 +72,18 @@ typedef struct Wc3DemuxContext { } Wc3DemuxContext; -/* bizarre palette lookup table */ +/** + * palette lookup table that does gamma correction + * + * can be calculated by this formula: + * for i between 0 and 252 inclusive: + * wc3_pal_lookup[i] = pow(i / 256.0, 0.8) * 256; + * values 253, 254 and 255 are all 0xFD + * calculating this at runtime should not cause any + * rounding issues, the maximum difference between + * the table values and the calculated doubles is + * about 0.497527 + */ static const unsigned char wc3_pal_lookup[] = { 0x00, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0E, 0x10, 0x12, 0x13, 0x15, 0x16, 0x18, 0x19, 0x1A,