[Pkg-gstreamer-commits] [gstreamer-vaapi] 61/176: plugins: factor out display creation process.

Vincent Cheng vcheng at moszumanska.debian.org
Tue Jun 3 08:09:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

vcheng pushed a commit to branch upstream
in repository gstreamer-vaapi.

commit 6f2dfb71e6a58c3988c1c8f3eeeeaea29973b656
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date:   Fri Dec 13 11:52:47 2013 +0100

    plugins: factor out display creation process.
    
    Move common VA display creation code to GstVaapiPluginBase, with the
    default display type remaining "any". Also add a "display-changed"
    hook so that subclasses could perform additional tasks when/if the
    VA display changed, due to a new display type request for instance.
    
    All plug-ins are updated to cope with the new internal APIs.
---
 gst/vaapi/gstvaapidecode.c     |  3 +-
 gst/vaapi/gstvaapidownload.c   |  3 +-
 gst/vaapi/gstvaapiencode.c     |  3 +-
 gst/vaapi/gstvaapipluginbase.c | 60 ++++++++++++++++++++++++++++
 gst/vaapi/gstvaapipluginbase.h | 15 +++++++
 gst/vaapi/gstvaapipluginutil.c | 34 ++++++----------
 gst/vaapi/gstvaapipluginutil.h |  6 +--
 gst/vaapi/gstvaapipostproc.c   |  3 +-
 gst/vaapi/gstvaapisink.c       | 89 ++++++++++++++++++++++++------------------
 gst/vaapi/gstvaapisink.h       |  1 -
 gst/vaapi/gstvaapiupload.c     |  3 +-
 11 files changed, 143 insertions(+), 77 deletions(-)

diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 102f0d4..2228122 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -603,8 +603,7 @@ gst_vaapidecode_set_context(GstElement *element, GstContext *context)
 static inline gboolean
 gst_vaapidecode_ensure_display(GstVaapiDecode *decode)
 {
-    return gst_vaapi_ensure_display(decode, GST_VAAPI_DISPLAY_TYPE_ANY,
-        &GST_VAAPI_PLUGIN_BASE_DISPLAY(decode));
+    return gst_vaapi_plugin_base_ensure_display(GST_VAAPI_PLUGIN_BASE(decode));
 }
 
 static inline guint
diff --git a/gst/vaapi/gstvaapidownload.c b/gst/vaapi/gstvaapidownload.c
index c596625..ed33bc4 100644
--- a/gst/vaapi/gstvaapidownload.c
+++ b/gst/vaapi/gstvaapidownload.c
@@ -275,8 +275,7 @@ gst_vaapidownload_init(GstVaapiDownload *download)
 static inline gboolean
 gst_vaapidownload_ensure_display(GstVaapiDownload *download)
 {
-    return gst_vaapi_ensure_display(download, GST_VAAPI_DISPLAY_TYPE_ANY,
-        &GST_VAAPI_PLUGIN_BASE_DISPLAY(download));
+    return gst_vaapi_plugin_base_ensure_display(GST_VAAPI_PLUGIN_BASE(download));
 }
 
 static gboolean
diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c
index 4227377..c8b670b 100644
--- a/gst/vaapi/gstvaapiencode.c
+++ b/gst/vaapi/gstvaapiencode.c
@@ -113,8 +113,7 @@ enum
 static inline gboolean
 ensure_display (GstVaapiEncode * encode)
 {
-  return gst_vaapi_ensure_display (encode,
-      GST_VAAPI_DISPLAY_TYPE_ANY, &GST_VAAPI_PLUGIN_BASE_DISPLAY (encode));
+  return gst_vaapi_plugin_base_ensure_display (GST_VAAPI_PLUGIN_BASE (encode));
 }
 
 static gboolean
diff --git a/gst/vaapi/gstvaapipluginbase.c b/gst/vaapi/gstvaapipluginbase.c
index b2d7d80..366d616 100644
--- a/gst/vaapi/gstvaapipluginbase.c
+++ b/gst/vaapi/gstvaapipluginbase.c
@@ -24,12 +24,20 @@
 
 #include "gst/vaapi/sysdeps.h"
 #include "gstvaapipluginbase.h"
+#include "gstvaapipluginutil.h"
 
+/* Default debug category is from the subclass */
 #define GST_CAT_DEFAULT (plugin->debug_category)
 
+static void
+default_display_changed (GstVaapiPluginBase * plugin)
+{
+}
+
 void
 gst_vaapi_plugin_base_class_init (GstVaapiPluginBaseClass * klass)
 {
+  klass->display_changed = default_display_changed;
 }
 
 void
@@ -37,6 +45,9 @@ gst_vaapi_plugin_base_init (GstVaapiPluginBase * plugin,
     GstDebugCategory * debug_category)
 {
   plugin->debug_category = debug_category;
+
+  plugin->display_type = GST_VAAPI_DISPLAY_TYPE_ANY;
+  plugin->display_type_req = GST_VAAPI_DISPLAY_TYPE_ANY;
 }
 
 void
@@ -74,3 +85,52 @@ gst_vaapi_plugin_base_close (GstVaapiPluginBase * plugin)
 {
   gst_vaapi_display_replace (&plugin->display, NULL);
 }
+
+/**
+ * gst_vaapi_plugin_base_set_display_type:
+ * @plugin: a #GstVaapiPluginBase
+ * @display_type: the new request #GstVaapiDisplayType
+ *
+ * Requests a new display type. The change is effective at the next
+ * call to gst_vaapi_plugin_base_ensure_display().
+ */
+void
+gst_vaapi_plugin_base_set_display_type (GstVaapiPluginBase * plugin,
+    GstVaapiDisplayType display_type)
+{
+  plugin->display_type_req = display_type;
+}
+
+/* Checks wether display type 1 is compatible with display type 2 */
+static gboolean
+display_type_is_compatible (GstVaapiDisplayType type1,
+    GstVaapiDisplayType type2)
+{
+  return (type1 == type2 || type2 == GST_VAAPI_DISPLAY_TYPE_ANY);
+}
+
+/**
+ * gst_vaapi_plugin_base_ensure_display:
+ * @plugin: a #GstVaapiPluginBase
+ *
+ * Ensures the display stored in @plugin complies with the requested
+ * display type constraints.
+ *
+ * Returns: %TRUE if the display was created to match the requested
+ *   type, %FALSE otherwise.
+ */
+gboolean
+gst_vaapi_plugin_base_ensure_display (GstVaapiPluginBase * plugin)
+{
+  if (plugin->display && display_type_is_compatible (plugin->display_type,
+          plugin->display_type_req))
+    return TRUE;
+  gst_vaapi_display_replace (&plugin->display, NULL);
+
+  if (!gst_vaapi_ensure_display (plugin, plugin->display_type_req))
+    return FALSE;
+  plugin->display_type = gst_vaapi_display_get_display_type (plugin->display);
+
+  GST_VAAPI_PLUGIN_BASE_GET_CLASS (plugin)->display_changed (plugin);
+  return TRUE;
+}
diff --git a/gst/vaapi/gstvaapipluginbase.h b/gst/vaapi/gstvaapipluginbase.h
index 2e3c27d..952d309 100644
--- a/gst/vaapi/gstvaapipluginbase.h
+++ b/gst/vaapi/gstvaapipluginbase.h
@@ -70,6 +70,8 @@ typedef struct _GstVaapiPluginBaseClass GstVaapiPluginBaseClass;
 
 #define GST_VAAPI_PLUGIN_BASE_DISPLAY(plugin) \
   (GST_VAAPI_PLUGIN_BASE(plugin)->display)
+#define GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(plugin) \
+  (GST_VAAPI_PLUGIN_BASE(plugin)->display_type)
 #define GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE(plugin, new_display) \
   (gst_vaapi_display_replace(&GST_VAAPI_PLUGIN_BASE_DISPLAY(plugin), \
        (new_display)))
@@ -89,6 +91,8 @@ struct _GstVaapiPluginBase
   GstDebugCategory *debug_category;
 
   GstVaapiDisplay *display;
+  GstVaapiDisplayType display_type;
+  GstVaapiDisplayType display_type_req;
 };
 
 struct _GstVaapiPluginBaseClass
@@ -102,6 +106,8 @@ struct _GstVaapiPluginBaseClass
     GstBaseTransformClass transform;
     GstVideoSinkClass sink;
   } parent_class;
+
+  void (*display_changed) (GstVaapiPluginBase * plugin);
 };
 
 G_GNUC_INTERNAL
@@ -125,6 +131,15 @@ G_GNUC_INTERNAL
 void
 gst_vaapi_plugin_base_close (GstVaapiPluginBase * plugin);
 
+G_GNUC_INTERNAL
+void
+gst_vaapi_plugin_base_set_display_type (GstVaapiPluginBase * plugin,
+    GstVaapiDisplayType display_type);
+
+G_GNUC_INTERNAL
+gboolean
+gst_vaapi_plugin_base_ensure_display (GstVaapiPluginBase * plugin);
+
 G_END_DECLS
 
 #endif /* GST_VAAPI_PLUGIN_BASE_H */
diff --git a/gst/vaapi/gstvaapipluginutil.c b/gst/vaapi/gstvaapipluginutil.c
index 92f9ec5..2e4c97e 100644
--- a/gst/vaapi/gstvaapipluginutil.c
+++ b/gst/vaapi/gstvaapipluginutil.c
@@ -37,6 +37,7 @@
 # include <gst/vaapi/gstvaapidisplay_wayland.h>
 #endif
 #include "gstvaapipluginutil.h"
+#include "gstvaapipluginbase.h"
 
 /* Preferred first */
 static const char *display_types[] = {
@@ -88,45 +89,31 @@ static const DisplayMap g_display_map[] = {
 };
 
 static GstVaapiDisplay *
-gst_vaapi_create_display(GstVaapiDisplayType *display_type)
+gst_vaapi_create_display(GstVaapiDisplayType display_type)
 {
     GstVaapiDisplay *display = NULL;
     const DisplayMap *m;
 
     for (m = g_display_map; m->type_str != NULL; m++) {
-        if (*display_type != GST_VAAPI_DISPLAY_TYPE_ANY &&
-            *display_type != m->type)
+        if (display_type != GST_VAAPI_DISPLAY_TYPE_ANY &&
+            display_type != m->type)
             continue;
 
         display = m->create_display(NULL);
-        if (display) {
-            *display_type = m->type;
-            break;
-        }
-
-        if (*display_type != GST_VAAPI_DISPLAY_TYPE_ANY)
+        if (display || display_type != GST_VAAPI_DISPLAY_TYPE_ANY)
             break;
     }
     return display;
 }
 
 gboolean
-gst_vaapi_ensure_display(
-    gpointer             element,
-    GstVaapiDisplayType  display_type,
-    GstVaapiDisplay    **display_ptr
-)
+gst_vaapi_ensure_display(gpointer element, GstVaapiDisplayType type)
 {
+    GstVaapiPluginBase * const plugin = GST_VAAPI_PLUGIN_BASE(element);
     GstVaapiDisplay *display;
     GstVideoContext *context;
 
     g_return_val_if_fail(GST_IS_VIDEO_CONTEXT(element), FALSE);
-    g_return_val_if_fail(display_ptr != NULL, FALSE);
-
-    /* Already exist ? */
-    display = *display_ptr;
-    if (display)
-        return TRUE;
 
     context = GST_VIDEO_CONTEXT(element);
     g_return_val_if_fail(context != NULL, FALSE);
@@ -134,16 +121,17 @@ gst_vaapi_ensure_display(
     gst_vaapi_video_context_prepare(context, display_types);
 
     /* Neighbour found and it updated the display */
-    if (*display_ptr)
+    if (plugin->display)
         return TRUE;
 
     /* If no neighboor, or application not interested, use system default */
-    display = gst_vaapi_create_display(&display_type);
+    display = gst_vaapi_create_display(type);
     if (!display)
         return FALSE;
 
     gst_vaapi_video_context_propagate(context, display);
-    *display_ptr = display;
+    GST_VAAPI_PLUGIN_BASE_DISPLAY_REPLACE(plugin, display);
+    gst_vaapi_display_unref(display);
     return TRUE;
 }
 
diff --git a/gst/vaapi/gstvaapipluginutil.h b/gst/vaapi/gstvaapipluginutil.h
index 76194d0..8336efb 100644
--- a/gst/vaapi/gstvaapipluginutil.h
+++ b/gst/vaapi/gstvaapipluginutil.h
@@ -30,11 +30,7 @@
 
 G_GNUC_INTERNAL
 gboolean
-gst_vaapi_ensure_display(
-    gpointer             element,
-    GstVaapiDisplayType  display_type,
-    GstVaapiDisplay    **display
-);
+gst_vaapi_ensure_display(gpointer element, GstVaapiDisplayType type);
 
 G_GNUC_INTERNAL
 void
diff --git a/gst/vaapi/gstvaapipostproc.c b/gst/vaapi/gstvaapipostproc.c
index 97eea32..f269b70 100755
--- a/gst/vaapi/gstvaapipostproc.c
+++ b/gst/vaapi/gstvaapipostproc.c
@@ -272,8 +272,7 @@ gst_vaapipostproc_set_context(GstElement *element, GstContext *context)
 static inline gboolean
 gst_vaapipostproc_ensure_display(GstVaapiPostproc *postproc)
 {
-    return gst_vaapi_ensure_display(postproc, GST_VAAPI_DISPLAY_TYPE_ANY,
-        &GST_VAAPI_PLUGIN_BASE_DISPLAY(postproc));
+    return gst_vaapi_plugin_base_ensure_display(GST_VAAPI_PLUGIN_BASE(postproc));
 }
 
 static gboolean
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index bb2f68a..fd89804 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -187,18 +187,23 @@ static GstFlowReturn
 gst_vaapisink_show_frame(GstBaseSink *base_sink, GstBuffer *buffer);
 
 static void
-gst_vaapisink_video_overlay_set_window_handle(GstVideoOverlay *overlay, guintptr window)
+gst_vaapisink_video_overlay_set_window_handle(GstVideoOverlay *overlay,
+    guintptr window)
 {
     GstVaapiSink * const sink = GST_VAAPISINK(overlay);
+    GstVaapiDisplayType display_type = GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink);
 
     /* Disable GLX rendering when vaapisink is using a foreign X
        window. It's pretty much useless */
-    if (sink->display_type == GST_VAAPI_DISPLAY_TYPE_GLX)
-        sink->display_type = GST_VAAPI_DISPLAY_TYPE_X11;
+    if (display_type == GST_VAAPI_DISPLAY_TYPE_GLX) {
+        display_type = GST_VAAPI_DISPLAY_TYPE_X11;
+        gst_vaapi_plugin_base_set_display_type(GST_VAAPI_PLUGIN_BASE(sink),
+            display_type);
+    }
 
     sink->foreign_window = TRUE;
 
-    switch (sink->display_type) {
+    switch (display_type) {
 #if USE_X11
     case GST_VAAPI_DISPLAY_TYPE_X11:
         gst_vaapisink_ensure_window_xid(sink, window);
@@ -347,28 +352,26 @@ get_display_type_name(GstVaapiDisplayType display_type)
 static inline gboolean
 gst_vaapisink_ensure_display(GstVaapiSink *sink)
 {
-    GstVaapiDisplayType display_type;
-    GstVaapiRenderMode render_mode;
-    const gboolean had_display = GST_VAAPI_PLUGIN_BASE_DISPLAY(sink) != NULL;
+    return gst_vaapi_plugin_base_ensure_display(GST_VAAPI_PLUGIN_BASE(sink));
+}
 
-    if (!gst_vaapi_ensure_display(sink, sink->display_type, &GST_VAAPI_PLUGIN_BASE_DISPLAY(sink)))
-        return FALSE;
+static void
+gst_vaapisink_display_changed(GstVaapiPluginBase *plugin)
+{
+    GstVaapiSink * const sink = GST_VAAPISINK(plugin);
+    GstVaapiRenderMode render_mode;
 
-    display_type = gst_vaapi_display_get_display_type(GST_VAAPI_PLUGIN_BASE_DISPLAY(sink));
-    if (display_type != sink->display_type || (!had_display && GST_VAAPI_PLUGIN_BASE_DISPLAY(sink))) {
-        GST_INFO("created %s %p", get_display_type_name(display_type),
-            GST_VAAPI_PLUGIN_BASE_DISPLAY(sink));
-        sink->display_type = display_type;
+    GST_INFO("created %s %p", get_display_type_name(plugin->display_type),
+             plugin->display);
 
-        sink->use_overlay =
-            gst_vaapi_display_get_render_mode(GST_VAAPI_PLUGIN_BASE_DISPLAY(sink), &render_mode) &&
-            render_mode == GST_VAAPI_RENDER_MODE_OVERLAY;
-        GST_DEBUG("use %s rendering mode", sink->use_overlay ? "overlay" : "texture");
+    sink->use_overlay =
+        gst_vaapi_display_get_render_mode(plugin->display, &render_mode) &&
+        render_mode == GST_VAAPI_RENDER_MODE_OVERLAY;
+    GST_DEBUG("use %s rendering mode",
+              sink->use_overlay ? "overlay" : "texture");
 
-        sink->use_rotation = gst_vaapi_display_has_property(
-            GST_VAAPI_PLUGIN_BASE_DISPLAY(sink), GST_VAAPI_DISPLAY_PROP_ROTATION);
-    }
-    return TRUE;
+    sink->use_rotation = gst_vaapi_display_has_property(plugin->display,
+        GST_VAAPI_DISPLAY_PROP_ROTATION);
 }
 
 static gboolean
@@ -512,7 +515,9 @@ gst_vaapisink_ensure_window(GstVaapiSink *sink, guint width, guint height)
     GstVaapiDisplay * const display = GST_VAAPI_PLUGIN_BASE_DISPLAY(sink);
 
     if (!sink->window) {
-        switch (sink->display_type) {
+        const GstVaapiDisplayType display_type =
+            GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink);
+        switch (display_type) {
 #if USE_GLX
         case GST_VAAPI_DISPLAY_TYPE_GLX:
             sink->window = gst_vaapi_window_glx_new(display, width, height);
@@ -536,7 +541,7 @@ gst_vaapisink_ensure_window(GstVaapiSink *sink, guint width, guint height)
             break;
 #endif
         default:
-            GST_ERROR("unsupported display type %d", sink->display_type);
+            GST_ERROR("unsupported display type %d", display_type);
             return FALSE;
         }
     }
@@ -580,7 +585,7 @@ gst_vaapisink_ensure_window_xid(GstVaapiSink *sink, guintptr window_id)
 
     gst_vaapi_window_replace(&sink->window, NULL);
 
-    switch (sink->display_type) {
+    switch (GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink)) {
 #if USE_GLX
     case GST_VAAPI_DISPLAY_TYPE_GLX:
         sink->window = gst_vaapi_window_glx_new_with_xid(display, xid);
@@ -590,7 +595,8 @@ gst_vaapisink_ensure_window_xid(GstVaapiSink *sink, guintptr window_id)
         sink->window = gst_vaapi_window_x11_new_with_xid(display, xid);
         break;
     default:
-        GST_ERROR("unsupported display type %d", sink->display_type);
+        GST_ERROR("unsupported display type %d",
+                  GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink));
         return FALSE;
     }
     return sink->window != NULL;
@@ -780,8 +786,12 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
     GstVaapiDisplay *display;
     guint win_width, win_height;
 
+    if (!gst_vaapisink_ensure_display(sink))
+        return FALSE;
+    display = GST_VAAPI_PLUGIN_BASE_DISPLAY(sink);
+
 #if USE_DRM
-    if (sink->display_type == GST_VAAPI_DISPLAY_TYPE_DRM)
+    if (GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink) == GST_VAAPI_DISPLAY_TYPE_DRM)
         return TRUE;
 #endif
 
@@ -800,10 +810,6 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
 
     gst_caps_replace(&sink->caps, caps);
 
-    if (!gst_vaapisink_ensure_display(sink))
-        return FALSE;
-    display = GST_VAAPI_PLUGIN_BASE_DISPLAY(sink);
-
 #if !GST_CHECK_VERSION(1,0,0)
     if (sink->use_video_raw) {
         /* Ensure the uploader is set up for upstream allocated buffers */
@@ -1228,7 +1234,7 @@ gst_vaapisink_show_frame(GstBaseSink *base_sink, GstBuffer *src_buffer)
     if (!gst_vaapi_apply_composition(surface, src_buffer))
         GST_WARNING("could not update subtitles");
 
-    switch (sink->display_type) {
+    switch (GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink)) {
 #if USE_DRM
     case GST_VAAPI_DISPLAY_TYPE_DRM:
         success = TRUE;
@@ -1254,7 +1260,8 @@ gst_vaapisink_show_frame(GstBaseSink *base_sink, GstBuffer *src_buffer)
         break;
 #endif
     default:
-        GST_ERROR("unsupported display type %d", sink->display_type);
+        GST_ERROR("unsupported display type %d",
+                  GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink));
         success = FALSE;
         break;
     }
@@ -1403,7 +1410,8 @@ gst_vaapisink_set_property(
 
     switch (prop_id) {
     case PROP_DISPLAY_TYPE:
-        sink->display_type = g_value_get_enum(value);
+        gst_vaapi_plugin_base_set_display_type(GST_VAAPI_PLUGIN_BASE(sink),
+            g_value_get_enum(value));
         break;
     case PROP_FULLSCREEN:
         sink->fullscreen = g_value_get_boolean(value);
@@ -1441,7 +1449,7 @@ gst_vaapisink_get_property(
 
     switch (prop_id) {
     case PROP_DISPLAY_TYPE:
-        g_value_set_enum(value, sink->display_type);
+        g_value_set_enum(value, GST_VAAPI_PLUGIN_BASE_DISPLAY_TYPE(sink));
         break;
     case PROP_FULLSCREEN:
         g_value_set_boolean(value, sink->fullscreen);
@@ -1473,12 +1481,15 @@ gst_vaapisink_class_init(GstVaapiSinkClass *klass)
     GObjectClass * const     object_class   = G_OBJECT_CLASS(klass);
     GstElementClass * const  element_class  = GST_ELEMENT_CLASS(klass);
     GstBaseSinkClass * const basesink_class = GST_BASE_SINK_CLASS(klass);
+    GstVaapiPluginBaseClass * const base_plugin_class =
+        GST_VAAPI_PLUGIN_BASE_CLASS(klass);
     GstPadTemplate *pad_template;
 
     GST_DEBUG_CATEGORY_INIT(gst_debug_vaapisink,
                             GST_PLUGIN_NAME, 0, GST_PLUGIN_DESC);
 
-    gst_vaapi_plugin_base_class_init(GST_VAAPI_PLUGIN_BASE_CLASS(klass));
+    gst_vaapi_plugin_base_class_init(base_plugin_class);
+    base_plugin_class->display_changed  = gst_vaapisink_display_changed;
 
     object_class->finalize       = gst_vaapisink_finalize;
     object_class->set_property   = gst_vaapisink_set_property;
@@ -1598,7 +1609,10 @@ gst_vaapisink_class_init(GstVaapiSinkClass *klass)
 static void
 gst_vaapisink_init(GstVaapiSink *sink)
 {
-    gst_vaapi_plugin_base_init(GST_VAAPI_PLUGIN_BASE(sink), GST_CAT_DEFAULT);
+    GstVaapiPluginBase * const plugin = GST_VAAPI_PLUGIN_BASE(sink);
+
+    gst_vaapi_plugin_base_init(plugin, GST_CAT_DEFAULT);
+    gst_vaapi_plugin_base_set_display_type(plugin, DEFAULT_DISPLAY_TYPE);
 
     sink->caps           = NULL;
     sink->window         = NULL;
@@ -1613,7 +1627,6 @@ gst_vaapisink_init(GstVaapiSink *sink)
     sink->foreign_window = FALSE;
     sink->fullscreen     = FALSE;
     sink->synchronous    = FALSE;
-    sink->display_type   = DEFAULT_DISPLAY_TYPE;
     sink->rotation       = DEFAULT_ROTATION;
     sink->rotation_req   = DEFAULT_ROTATION;
     sink->use_reflection = FALSE;
diff --git a/gst/vaapi/gstvaapisink.h b/gst/vaapi/gstvaapisink.h
index 491f1b4..8aae2ff 100644
--- a/gst/vaapi/gstvaapisink.h
+++ b/gst/vaapi/gstvaapisink.h
@@ -71,7 +71,6 @@ struct _GstVaapiSink {
 
     GstVaapiUploader   *uploader;
     GstCaps            *caps;
-    GstVaapiDisplayType display_type;
     GstVaapiWindow     *window;
     guint               window_width;
     guint               window_height;
diff --git a/gst/vaapi/gstvaapiupload.c b/gst/vaapi/gstvaapiupload.c
index ce84d20..25ebcd0 100644
--- a/gst/vaapi/gstvaapiupload.c
+++ b/gst/vaapi/gstvaapiupload.c
@@ -251,8 +251,7 @@ gst_vaapiupload_init(GstVaapiUpload *upload)
 static inline gboolean
 gst_vaapiupload_ensure_display(GstVaapiUpload *upload)
 {
-    return gst_vaapi_ensure_display(upload, GST_VAAPI_DISPLAY_TYPE_ANY,
-        &GST_VAAPI_PLUGIN_BASE_DISPLAY(upload));
+    return gst_vaapi_plugin_base_ensure_display(GST_VAAPI_PLUGIN_BASE(upload));
 }
 
 static gboolean

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gstreamer/gstreamer-vaapi.git



More information about the Pkg-gstreamer-commits mailing list