[MPlayer-cvslog] r28673 - trunk/libvo/vo_vdpau.c

Carl Eugen Hoyos cehoyos at ag.or.at
Sat Feb 21 23:43:09 CET 2009


Reimar Döffinger <Reimar.Doeffinger <at> stud.uni-karlsruhe.de> writes:

> > You have to pass VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD or
> > VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD to vdp_video_mixer_render()
> > to actually use (bob-) deinterlacing. I only found out tonight.
> 
> Hard to see, but I don't think that does any deinterlacing, that just
> discards one field. You can use that to build your own deinterlacer I
> guess, but it's not anything simple or "automatic".

Unfortunately, you are definitely right: Output is identical to -vf field.

It tried the following (something similar was needed for xvmc deinterlacing),
but it didn't change anything for me:

Index: libvo/vo_vdpau.c
===================================================================
--- libvo/vo_vdpau.c    (revision 28697)
+++ libvo/vo_vdpau.c    (working copy)
@@ -182,11 +182,23 @@
   // which is not really possible currently. Deinterlacing is supposed to fall
   // back to bob deinterlacing, but that seems not to work either.
     vdp_st = vdp_video_mixer_render(video_mixer, VDP_INVALID_HANDLE, 0,
-                                    VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME,
+                            VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD,
                                     0, NULL,
surface_render[vid_surface_num].surface, 0, NULL, &src_rect_vid,
                                     output_surface,
                                     NULL, &out_rect_vid, 0, NULL);
     CHECK_ST_WARNING("Error when calling vdp_video_mixer_render")
+    vdp_st = vdp_presentation_queue_block_until_surface_idle(vdp_flip_queue,
+                                                             output_surface,
+                                                             &dummy);
+    CHECK_ST_WARNING("vdp_presentation_queue_block_until_surface_idle")
+
+    vdp_st = vdp_video_mixer_render(video_mixer, VDP_INVALID_HANDLE, 0,
+    VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD,
+    0, NULL, surface_render[vid_surface_num].surface, 0, NULL, &src_rect_vid,
+                                    output_surface,
+                                    NULL, &out_rect_vid, 0, NULL);
+    CHECK_ST_WARNING("Error when calling vdp_video_mixer_render")
+
 }

 static void resize(void)

Carl Eugen




More information about the MPlayer-cvslog mailing list