diff options
Diffstat (limited to 'quantize.c')
-rw-r--r-- | quantize.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -9,8 +9,11 @@ #include <stdio.h> #include <stdlib.h> + +#include <vdr/config.h> #include "quantize.h" + cQuantize::cQuantize() { } @@ -18,8 +21,8 @@ cQuantize::~cQuantize() { } cQuantizeFixed::cQuantizeFixed() { - redLevelCount = 8; - greenLevelCount = 8; + redLevelCount = 7; + greenLevelCount = 9; blueLevelCount = 4; redLevels[0] = 0; @@ -43,8 +46,13 @@ cQuantizeFixed::cQuantizeFixed() { for (int r = 0; r < redLevelCount; r++) { for (int g = 0; g < greenLevelCount; g++) { for (int b = 0; b < blueLevelCount; b++) { +#if VDRVERSNUM >= 10307 + paletteOutput[r * greenLevelCount * blueLevelCount + g * blueLevelCount + b] = + (redLevels[r] << 16) | (greenLevels[g] << 8) | blueLevels[b]; +#else paletteOutput[r * greenLevelCount * blueLevelCount + g * blueLevelCount + b] = (blueLevels[b] << 16) | (greenLevels[g] << 8) | redLevels[r]; +#endif } } } @@ -180,6 +188,15 @@ int cQuantizeWu::Quantize(unsigned char * input, int size, int colors) weight = Vol(&cube[k], wt); if (weight) { +#if VDRVERSNUM >= 10307 +#ifdef NOINVERT + palette[k * 4 + 2] = (Vol(&cube[k], mb) / weight) WEIG; + palette[k * 4 + 0] = (Vol(&cube[k], mr) / weight) WEIG; +#else + palette[k * 4 + 0] = (Vol(&cube[k], mb) / weight) WEIG; + palette[k * 4 + 2] = (Vol(&cube[k], mr) / weight) WEIG; +#endif +#else #ifdef NOINVERT palette[k * 4 + 2] = (Vol(&cube[k], mr) / weight) WEIG; palette[k * 4 + 0] = (Vol(&cube[k], mb) / weight) WEIG; @@ -187,6 +204,7 @@ int cQuantizeWu::Quantize(unsigned char * input, int size, int colors) palette[k * 4 + 0] = (Vol(&cube[k], mr) / weight) WEIG; palette[k * 4 + 2] = (Vol(&cube[k], mb) / weight) WEIG; #endif +#endif palette[k * 4 + 1] = (Vol(&cube[k], mg) / weight) WEIG; } else |