On Tue, Sep 05, 2006 at 06:33:51PM +0200, Stefan Lucke wrote:
> I think I found the bug. My first thought from this morning lead my to the
> direction, but it _only_ fixed the OSD drawing and _not_ the shrinked
> picture above the downscaled 16:9 rect. This rect is from clear background
> operation.
> 
> Attached patch fixes both: OSD and clear background.

Thank you, Stefan! I tested this on fresh DirectFB and DFB++ CVS, and
it really fixes those issues.

The two problematic clips look correct now.  I tried setting
cDFBVideoOut::fieldParity to 1 in the constructor, but it made them
look worse.  The BBC News clip looks completely okay now, but the clip
I made last week may merely be suffering from dropped frames now
(due to very big movement).

Now I only have one wishlist item left for DirectFB on Matrox cards:
get rid of that busy-waiting in IDirectFBSurface::Flip() by implementing
some ioctl() calls to make it interrupt-driven.  Meanwhile, this patch
seems to substantially reduce the CPU consumption on my system:

Index: video-dfb.c
===================================================================
RCS file: /cvsroot/softdevice/softdevice/video-dfb.c,v
retrieving revision 1.70
diff -p -u -r1.70 video-dfb.c
--- video-dfb.c 5 Aug 2006 17:51:25 -0000       1.70
+++ video-dfb.c 6 Sep 2006 20:37:47 -0000
@@ -1300,6 +1300,7 @@ void cDFBVideoOut::ShowOSD ()
         scrSurface->SetBlittingFlags(DSBLIT_BLEND_ALPHACHANNEL);
         scrSurface->Blit(osdSurface, &osdsrc, 0, 0);
       }
+      usleep(1000);
       scrSurface->Flip(NULL, DSFLIP_WAITFORSYNC);
 
     }
@@ -1499,6 +1500,7 @@ void cDFBVideoOut::YUV(sPicBuffer *buf)
 
       }
       //scrSurface->Flip(NULL, (setupStore->useMGAtv) ? 
DSFLIP_WAITFORSYNC:DSFLIP_ONSYNC);
+      usleep(2000);
       scrSurface->Flip(NULL, DSFLIP_WAITFORSYNC);
     }
     else

According to "top", the vdr process consumes 52 to 67 per cent of CPU
(900 MHz Celeron).

I plan to make some OProfile measurements this weekend.  At the very least,
I will measure the impact of colour space transformation (i.e., let
-vo dfb:mgatv show wrong colours by pretending it uses the native output
colour space of ffmpeg).

        Marko
_______________________________________________
Softdevice-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/softdevice-devel

Reply via email to