Hi all,
playing around with libva we found that deinterlacing a TV stream seems not to work on a Intel GM45
chip.
We are using the latest intel drivers from the g45-h264 branch on
git.freedesktop.org/git/vaapi/intel-driver.git. Testing both on a Nvidia chip and an Intel GM45 with
mplayer + vaapi-patches and modified gstreamer-vaapi plugins (see attached quick'n'dirty fix) we found:
mplayer-withVaapi -vo vaapi:deint=2 -va vaapi ...
... OK on nvidia (deinterlaced images)
... NOT OK on Intel
modified gstreamer-vaapi
... OK on nvidia
... NOT OK on Intel
Did we miss something in our setup? Or maybe a known restriction for intel
drivers?
Regarding the gstreamer-vaapi modification: It is based on what was said in the
following thread
http://lists.freedesktop.org/archives/libva/2010-July/000338.html
Might be a feature to be integrated in the vaapi-plugins. Could define another property in vaapisink
(like deint={true, false}) allowing to enforce putSurface flags set to VA_FRAME_PICTURE vs.
VA_TOP_FIELD+VA_BOTTOM_FIELD. What do you think, Gwenole?
Thanks,
Holger
diff --git a/gst-libs/gst/vaapi/gstvaapiwindow_x11.c b/gst-libs/gst/vaapi/gstvaapiwindow_x11.c
index f41e3aa..fc3770e 100644
--- a/gst-libs/gst/vaapi/gstvaapiwindow_x11.c
+++ b/gst-libs/gst/vaapi/gstvaapiwindow_x11.c
@@ -435,8 +435,23 @@ gst_vaapi_window_x11_render(
dst_rect->width,
dst_rect->height,
NULL, 0,
- from_GstVaapiSurfaceRenderFlags(flags)
+ VA_TOP_FIELD
);
+ status = vaPutSurface(
+ GST_VAAPI_OBJECT_VADISPLAY(window),
+ surface_id,
+ GST_VAAPI_OBJECT_ID(window),
+ src_rect->x,
+ src_rect->y,
+ src_rect->width,
+ src_rect->height,
+ dst_rect->x,
+ dst_rect->y,
+ dst_rect->width,
+ dst_rect->height,
+ NULL, 0,
+ VA_BOTTOM_FIELD
+ );
GST_VAAPI_OBJECT_UNLOCK_DISPLAY(window);
if (!vaapi_check_status(status, "vaPutSurface()"))
return FALSE;
_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva