Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: patch OSD color on linuxppc



Thanks Klaus,

You're patch works fine.

Now  linux dvb + vdr is ok on linuxppc

thanks everybody.

>From: Klaus Schmidinger <Klaus.Schmidinger@cadsoft.de>
>To: linux-dvb@linuxtv.org
>Subject: [linux-dvb] Re: patch OSD color on linuxppc
>Date: Mon, 15 Apr 2002 18:47:13 +0200
>
>Ralph Metzler wrote:
> >
> > Jean Martin writes:
> >  > --- dvb.c    Sat Apr 13 00:01:13 2002
> >  > +++ dvbmodppc.c      Sat Apr 13 00:01:04 2002
> >  >
> >  > @@ -1899,9 +1899,15 @@
> >  >                  if (copy_from_user(colors, dc->data, 
>sizeof(colors)))
> >  >                          return -EFAULT;
> >  >                  for (i=0; i<len; i++)
> >  > -                        OSDSetColor(dvb, dc->color+i,
> >  > +#ifndef __powerpc__
> >  > +                       OSDSetColor(dvb, dc->color+i,
> >  >                                      colors[i*4]  , colors[i*4+1],
> >  >                                      colors[i*4+2], colors[i*4+3]);
> >  > +#else
> >  > +                       OSDSetColor(dvb, dc->color+i,
> >  > +                                    colors[i*4+3]  ,colors[i*4+2],
> >  > +                                    colors[i*4+1], colors[i*4+0]);
> >  > +#endif
> >  >                  return 0;
> >  >          }
> >  >          case OSD_SetTrans:
> >
> > No, this only seems to be necessary because VDR treats the palette as an 
>array
> > of u32 (or enums to be specific) but it is defined as an array of u8.
> > VDR uses enum entries with ABGR ABGR ... which translate to
> > R G B A R G B A ... on little-endian but A B G R A B G R ...
> > on big-endian when casting u32* to u8*. It should use u8 arrays
> > with the right order instead.
>
>I don't have a PPC, so I can't test this. But maybe this helps:
>
>--- dvbosd.c    2002/01/13 16:25:18     1.12
>+++ dvbosd.c    2002/04/13 11:34:48     1.13
>@@ -25,6 +25,9 @@
>
>  int cPalette::Index(eDvbColor Color)
>  {
>+#if __BYTE_ORDER == __BIG_ENDIAN
>+  Color = eDvbColor(((Color & 0xFF) << 24) | ((Color & 0xFF00) << 8) | 
>((Color & 0xFF0000) >> 8) | ((Color & 0xFF000000) >> 24));
>+#endif
>    for (int i = 0; i < numColors; i++) {
>        if (color[i] == Color) {
>           used[i] = true;
>
>Klaus
>--
>_______________________________________________________________
>
>Klaus Schmidinger                       Phone: +49-8635-6989-10
>CadSoft Computer GmbH                   Fax:   +49-8635-6989-40
>Hofmark 2                               Email:   kls@cadsoft.de
>D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de
>_______________________________________________________________
>
>
>--
>Info:
>To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe 
>linux-dvb" as subject.
>




_________________________________________________________________
Rejoignez le plus grand service de messagerie au monde avec MSN Hotmail. 
http://www.hotmail.com/fr



-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.


Home | Main Index | Thread Index