Hi all,

  Thanks to the awesome work of Ville Syrjala I can now use my G400's TV
output as an interlaced framebuffer.  With the kernel patch on his site,
I can also successfully wait for the retrace and get an interrupt every
field.  I can also query the card to have it return which field is
currently being displayed.  The next part is to return that information
to my application.  Once I have that, I think my DVD player should
successfully be able to output an interlaced stream correctly without
tearing or displaying fields out of order.

  So, the question now is where to put some of these pieces in the API,
and how this should work.  DirectFB's API is sweet in that I can have
interlaced surfaces, but there are no previsions for interlaced output
surfaces AFAICT.

  Proposal:

  1. I need to know which field is currently being displayed on the
DisplayLayer so that I don't draw to it (and tear).  I think this should
go as part of IDirectFBDisplayLayer.  I will add it using SetOpacity as
my example.  I don't think it makes sense as part of IDirectFBSurface
since for a non-output surface, it could be, say, displaying its even
field but being blit into the odd field of the output.  I think it would
be confusing.

  2. Why is WaitForSync part of IDirectFB?  The G400 for example has two
heads, each with a separate sync signal (and VBI interrupt!).  I'd
really like to use both at once.  I'd like to move WaitForSync into
IDirectFBDisplayLayer.  If it's there, I'd like it to also return which
field is being displayed (have the information available in two places),
since I think it would be cleaner.

  3. Right now, an interlaced IDirectFBSurface means nothing except in
special cases.  I'd like to update all the drawing functions so that
they can act on fields independently, otherwise I might tear etc.  So,
ClearField, BlitField, DrawRectangleField, etc.  Thoughts?  Should maybe
the clip rects be updated so that they have a stride?  It's awkward that
these functions work on rects rather than starting position+stride as
the latter is much easier to work with when dealing with interlaced
buffers (just set stride=linestride*2, height/=2).

  Thoughts?  I'm just really concerned about 1 since I'm going to code
it today so that I can code more tests.

-- 
Billy Biggs
[EMAIL PROTECTED]


-- 
Info:  To unsubscribe send a mail to [EMAIL PROTECTED] with 
"unsubscribe directfb-dev" as subject.

Reply via email to