va: Delay the VAProcPipelineCaps query after context created.
authorHe Junyan <junyan.he@intel.com>
Wed, 21 Dec 2022 06:36:31 +0000 (14:36 +0800)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 21 Dec 2022 14:31:23 +0000 (14:31 +0000)
The VAAPI vaQueryVideoProcPipelineCaps() requires the context as the
parameter. So far, we always pass VA_INVALID_ID and it can succeed.
But the API does not say that and in theory, a valid context is required.
Now the new platform really needs a valid context and so we have to
delay that query until the context is created.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3613>

subprojects/gst-plugins-bad/sys/va/gstvafilter.c

index 13393b6..44f54db 100644 (file)
@@ -358,9 +358,6 @@ gst_va_filter_open (GstVaFilter * self)
   if (!gst_va_filter_ensure_config_attributes (self, &attrib.value))
     return FALSE;
 
-  if (!gst_va_filter_ensure_pipeline_caps (self))
-    return FALSE;
-
   self->image_formats = gst_va_display_get_image_formats (self->display);
   if (!self->image_formats)
     return FALSE;
@@ -384,6 +381,11 @@ gst_va_filter_open (GstVaFilter * self)
     goto bail;
   }
 
+  if (!gst_va_filter_ensure_pipeline_caps (self)) {
+    vaDestroyContext (dpy, self->context);
+    goto bail;
+  }
+
   return TRUE;
 
 bail: