Mailing List archive

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

[vdr] Re: non-transparent osd skin



Torgeir Veimo a écrit :
On Mon, 2004-10-18 at 17:22 +0200, Klaus Schmidinger wrote:

Just take a look at what's done in VDR/dvbosd.c.
cDvbOsd is derived from cOsd and implements what it takes
to get the bitmap(s) displayed on the screen. Your implemenation
of a derived cOsd class may do different things, but eventually
it will send the bitmap data to some display facility in the
Flush() function. There you can do your dithering stuff first.

If you need full control over text drawing, you can implement
the DrawText() function as well.
This is for creating a plugin that replaces the built in VDR osd?

I tried a simpler approach by just dithering in softdevice's Xv output
class just before the OSD is drawn using X calls. There's a check to
counter jagged edges for fonts as well, but it creates a shadow to the
right of solid areas as well.
That the right approach, WRT VDR, but on the softdevice front, you shloud implement that in output-method independent class, in order to share this code between the different methods that need it (FB, Xv, maybe Vidix, and definitely DirectFB, even though DirectFB should do transparent OSD - I can't make it work for now).
So :
* each output method class should select if it needs this dithering code
* the base class sould implement the dithering
* the actual Flush method should call it if needed : either the effective class calls the dither method, or the base method relies on an boolean set by the effective instance.

BTW : do you know the performance impact of this patch ?

--
NH




Home | Main Index | Thread Index