va: vpp: handle context query
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Mon, 1 Feb 2021 22:55:11 +0000 (23:55 +0100)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 5 Feb 2021 17:52:56 +0000 (18:52 +0100)
Previously vapostproc didn't communicate its context through query mechanism,
which is required for context sharing. This patch completes this missing bits.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2007>

sys/va/gstvavpp.c

index a70e5ee48cfbccae04c60c11a87bf1f1664a7cbc..5d4794762016cebf3dd3fba058d3e73938ec11e3 100644 (file)
@@ -598,6 +598,34 @@ gst_va_vpp_decide_allocation (GstBaseTransform * trans, GstQuery * query)
       query);
 }
 
+static gboolean
+gst_va_vpp_query (GstBaseTransform * trans, GstPadDirection direction,
+    GstQuery * query)
+{
+  GstVaVpp *self = GST_VA_VPP (trans);
+  gboolean ret = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CONTEXT:
+    {
+      GstVaDisplay *display = NULL;
+
+      gst_object_replace ((GstObject **) & display,
+          (GstObject *) self->display);
+      ret = gst_va_handle_context_query (GST_ELEMENT_CAST (self), query,
+          display);
+      gst_clear_object (&display);
+      break;
+    }
+    default:
+      ret = GST_BASE_TRANSFORM_CLASS (parent_class)->query (trans, direction,
+          query);
+      break;
+  }
+
+  return ret;
+}
+
 /* our output size only depends on the caps, not on the input caps */
 static gboolean
 gst_va_vpp_transform_size (GstBaseTransform * trans,
@@ -2147,6 +2175,7 @@ gst_va_vpp_class_init (gpointer g_class, gpointer class_data)
       GST_DEBUG_FUNCPTR (gst_va_vpp_propose_allocation);
   trans_class->decide_allocation =
       GST_DEBUG_FUNCPTR (gst_va_vpp_decide_allocation);
+  trans_class->query = GST_DEBUG_FUNCPTR (gst_va_vpp_query);
   trans_class->transform_caps = GST_DEBUG_FUNCPTR (gst_va_vpp_transform_caps);
   trans_class->fixate_caps = GST_DEBUG_FUNCPTR (gst_va_vpp_fixate_caps);
   trans_class->transform_size = GST_DEBUG_FUNCPTR (gst_va_vpp_transform_size);