Thanks Marcus,
Just to elaborate a bit more we will have to convert RGB values to Y
(luminance), and Cr + Cb -> UV values (chrominance). Which makes up the YUV
display framebuffer (also called CIE Luv).
The trickiest bit is that Y and UV values which make up each on screen pixel
are stored in two separate (but contiguous) planar framebuffers. Ie
720*576*8bit pixels of Y values, followed by 720*576*8bit UV values. We will
need dev/fb to be in this bi planar format which means GGI framebuffer/pixel
operations will need operate on both Y & UV planes simultaneously as well as
converting the (RGB <-> YUV) formats. Does/could GGI support any such multi
plane operations through one single config point?
Ie will I need to implement custom fb read/write procedures for lots of
framebuffer access routines or maybe just putpixel & getpixel.
Regards,
David.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] On Behalf Of Marcus
Sundberg
Sent: Tuesday, 16 May 2000 8:16
To: [EMAIL PROTECTED]
Subject: Re: GGI support for non standard FB devices
David Craig <[EMAIL PROTECTED]> writes:
> We are wanting to use 'non standard' FB device format (YCR for TV display
> output) in linux. I do not imagine that ggi would work on such a
framebuffer
> device 'out of the box', but has anyone actually used a non-standard fb
> device before? What is involved in porting GGI?
As long as the format has packed pixels, and doesn't do "weird" stuff,
like writing one pixel affects the colors of adjacent pixels, all
you need to do is implement the ggiMapColor()/ggiUnmapPixel()
functions for that format.
Otherwise you must implement at least the ggiPutPixel()/ggiGetPixel()
functions, and to get descent speed you should implement all drawing
functions for that format.
We might also have to add a new buffer type to the DirectBuffer
structure, but that is no problem.
If the FB device is implemented as a standard linux framebuffer
you just need to modify the display-fbdev target to load the
apropriate sublibs and set up DirectBuffers correctly. Otherwise
you'll need to write your own target, but that is quite simple if
you use an existing one as a template. Basicly you just set up
the internal structs, load the generic-stubs library, and then
you override the functions you want. Either directly in the target,
or by loading sublibs that overrides them.
//Marcus
--
-------------------------------+------------------------------------
Marcus Sundberg | http://www.stacken.kth.se/~mackan
Royal Institute of Technology | Phone: +46 707 295404
Stockholm, Sweden | E-Mail: [EMAIL PROTECTED]