va: Delay the VAProcPipelineCaps query after context created.

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/3620>
This commit is contained in:
He Junyan 2022-12-21 14:36:31 +08:00 committed by GStreamer Marge Bot
parent 10fee807b9
commit 78d1f5d026

View file

@ -363,9 +363,6 @@ gst_va_filter_open (GstVaFilter * self)
if (!gst_va_filter_ensure_config_attributes (self, &attrib.value)) if (!gst_va_filter_ensure_config_attributes (self, &attrib.value))
return FALSE; return FALSE;
if (!gst_va_filter_ensure_pipeline_caps (self))
return FALSE;
self->image_formats = gst_va_display_get_image_formats (self->display); self->image_formats = gst_va_display_get_image_formats (self->display);
if (!self->image_formats) if (!self->image_formats)
return FALSE; return FALSE;
@ -393,6 +390,11 @@ gst_va_filter_open (GstVaFilter * self)
goto bail; goto bail;
} }
if (!gst_va_filter_ensure_pipeline_caps (self)) {
vaDestroyContext (dpy, self->context);
goto bail;
}
return TRUE; return TRUE;
bail: bail: