summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2009-10-02 08:43:10 +0200
committerChristian Gmeiner <christian.gmeiner@gmail.com>2009-10-02 08:43:10 +0200
commit34c05c5693dd8a8b02584026e690dfa107cec712 (patch)
tree2802dbe89e8a3aa7ca23d38054ae44d445247a99
parent17de1deaf50ac809f30cdf22b63abafdcf75d3fc (diff)
downloadvdr-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.c12
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