diff options
author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2009-10-02 08:43:10 +0200 |
---|---|---|
committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2009-10-02 08:43:10 +0200 |
commit | 34c05c5693dd8a8b02584026e690dfa107cec712 (patch) | |
tree | 2802dbe89e8a3aa7ca23d38054ae44d445247a99 | |
parent | 17de1deaf50ac809f30cdf22b63abafdcf75d3fc (diff) | |
download | vdr-plugin-dxr3-34c05c5693dd8a8b02584026e690dfa107cec712.tar.gz vdr-plugin-dxr3-34c05c5693dd8a8b02584026e690dfa107cec712.tar.bz2 |
fix bug #164 - Mixed up OSD colours
the driver wants the color values in BBGGRR and not RRGGBB also the
opacity values need some magic.
-rw-r--r-- | spuencoder.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/spuencoder.c b/spuencoder.c index 1ddb186..dc2f852 100644 --- a/spuencoder.c +++ b/spuencoder.c @@ -238,8 +238,16 @@ void cSpuEncoder::generateColorPalette() for (int i = 0; i < numColors; i++) { // separate AA and RRGGBB values - opacity[i] = (colors[i] & 0xff000000) >> 24; - palcolors[i] = Tools::Rgb2YCrCb(colors[i] & 0x00ffffff); + tColor opac = (colors[i] & 0xff000000) >> 24; + tColor color = (colors[i] & 0x00ffffff); + + opacity[i] = opac * 0xf / 0xff; + + // convert RRGGBB to BBGGRR + color = ((color & 0x0000ff) << 16) | (color & 0x00ff00) | ((color & 0xff0000) >> 16); + + // convert to YCrCb + palcolors[i] = Tools::Rgb2YCrCb(color); } // upload color palette |