Okay - I've done some digging and found the problem...

To recap, our application decodes MPEG-2 video into a video window and draws
overlays on top of the video.  The problem was that the two seemed to
"fight", causing the overlays to blink every time the video was refreshed
(ie - 30 Hz or so)

The following code is from the 4.4.0 X server source, i830_video.c, line
1416:
  /* update cliplist */
   /*
    * XXX Always draw the key.  LinDVD seems to fill the window background
    * with a colour different from the key.  This works around that.
    */
   if (1 || !REGION_EQUAL(pScreen, &pPriv->clip, clipBoxes)) {
      REGION_COPY(pScreen, &pPriv->clip, clipBoxes);
      xf86XVFillKeyHelper(pScreen, pPriv->colorKey, clipBoxes);
   }

This code seems to be the offender...  If I comment out the whole if block,
things work as they should - the video is drawn into the YUV buffer, the
overlays are drawn into the RGB buffer, and things blit together OK.

I'm by no means a driver expert, but by the looks of the comments above this
block of code, it looks like there was a bug in LinDVD that was worked
around in the driver...

Now - another somewhat related problem.  When the MPEG-2 software is
decoding and displaying video, at times video is drawn outside the video
application in random blocks on the screen (ie - in terminal windows, on the
desktop, etc.)  This seems to happen whether the above mentioned block is
commented out or not, so I don't think I introduced the bug.

Does anyone have any suggestions?

Thanks
Mark

----- Original Message ----- 
From: "Mark Cuss" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Wednesday, April 07, 2004 1:24 PM
Subject: Re: Intel 82852 & Xv


> Ok - thanks.  I'll have a look.
>
> Mark
> ----- Original Message ----- 
> From: "Alan Hourihane" <[EMAIL PROTECTED]>
> To: "Mark Cuss" <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Wednesday, April 07, 2004 1:22 PM
> Subject: Re: Intel 82852 & Xv
>
>
> > On Wed, Apr 07, 2004 at 01:06:55PM -0600, Mark Cuss wrote:
> > > Hello again
> > >
> > > I have an application running on this machine that decodes MPEG-2 into
a
> > > window and then draws overlays on top of the video using a colorkey.
> This
> > > works on other hardware combinations (ie - an Intel 810, anything
> nVidia,
> > > etc), but on this machine the XvPutImage that performed by the MPEG-2
> > > encoder and the draw commands for the overlays fight with each other,
> > > causing a blinking effect...  I've seen this before on the SMI chip,
and
> one
> > > of my co-workers modified the X server to fix it for me - it had
> something
> > > to do with the X server and the driver not negotiating the YUV format
> > > correctly - something about the YUV data not being drawn into the
> overlay
> > > buffer - sorry - I just can't remember the nitty gritty details.
> > >
> > > Does anybody know if and how this problem could be addressed?
> >
> > Jump into the driver Mark, and take a look.
> >
> > Without nitty gritty details and sample applications and videos there
> > may not be a lot others can do.
> >
> > Alan.
> >
>
>
> _______________________________________________
> Devel mailing list
> [EMAIL PROTECTED]
> http://XFree86.Org/mailman/listinfo/devel
>


_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to