summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-01-09 10:37:30 +0100
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-01-16 13:45:29 +0100
commitf2b97cb18a3406c4e91d556c519032088d3dd7c4 (patch)
treea3d7c27c608846d0675fad7f507783f54528657c
parentbbf59873224722a7480a5559df80f2574a74c4e7 (diff)
vaapisink: implement GstXOverlay::set_render_rectangle().
-rw-r--r--gst/vaapi/gstvaapisink.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index 9006bd80..56198098 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -49,6 +49,9 @@
#define HAVE_GST_XOVERLAY_SET_WINDOW_HANDLE \
GST_PLUGINS_BASE_CHECK_VERSION(0,10,31)
+#define HAVE_GST_XOVERLAY_SET_RENDER_RECTANGLE \
+ GST_PLUGINS_BASE_CHECK_VERSION(0,10,29)
+
#define GST_PLUGIN_NAME "vaapisink"
#define GST_PLUGIN_DESC "A VA-API based videosink"
@@ -160,6 +163,30 @@ gst_vaapisink_xoverlay_set_xid(GstXOverlay *overlay, XID xid)
}
#endif
+#if HAVE_GST_XOVERLAY_SET_RENDER_RECTANGLE
+static void
+gst_vaapisink_xoverlay_set_render_rectangle(
+ GstXOverlay *overlay,
+ gint x,
+ gint y,
+ gint width,
+ gint height
+)
+{
+ GstVaapiSink * const sink = GST_VAAPISINK(overlay);
+ GstVaapiRectangle * const display_rect = &sink->display_rect;
+
+ display_rect->x = x;
+ display_rect->y = y;
+ display_rect->width = width;
+ display_rect->height = height;
+
+ GST_DEBUG("render rect (%d,%d):%ux%u",
+ display_rect->x, display_rect->y,
+ display_rect->width, display_rect->height);
+}
+#endif
+
static void
gst_vaapisink_xoverlay_expose(GstXOverlay *overlay)
{
@@ -177,11 +204,14 @@ static void
gst_vaapisink_xoverlay_iface_init(GstXOverlayClass *iface)
{
#if HAVE_GST_XOVERLAY_SET_WINDOW_HANDLE
- iface->set_window_handle = gst_vaapisink_xoverlay_set_window_handle;
+ iface->set_window_handle = gst_vaapisink_xoverlay_set_window_handle;
#else
- iface->set_xwindow_id = gst_vaapisink_xoverlay_set_xid;
+ iface->set_xwindow_id = gst_vaapisink_xoverlay_set_xid;
+#endif
+#if HAVE_GST_XOVERLAY_SET_RENDER_RECTANGLE
+ iface->set_render_rectangle = gst_vaapisink_xoverlay_set_render_rectangle;
#endif
- iface->expose = gst_vaapisink_xoverlay_expose;
+ iface->expose = gst_vaapisink_xoverlay_expose;
}
static void