diff --git a/gst-libs/gst/vaapi/gstvaapiblend.c b/gst-libs/gst/vaapi/gstvaapiblend.c index 5b093d4d48..07a1ab6ed8 100644 --- a/gst-libs/gst/vaapi/gstvaapiblend.c +++ b/gst-libs/gst/vaapi/gstvaapiblend.c @@ -105,6 +105,9 @@ gst_vaapi_blend_finalize (GObject * object) { GstVaapiBlend *const blend = GST_VAAPI_BLEND (object); + if (!blend->display) + goto bail; + GST_VAAPI_DISPLAY_LOCK (blend->display); if (blend->va_context != VA_INVALID_ID) { @@ -123,6 +126,7 @@ gst_vaapi_blend_finalize (GObject * object) gst_vaapi_display_replace (&blend->display, NULL); +bail: G_OBJECT_CLASS (gst_vaapi_blend_parent_class)->finalize (object); } diff --git a/gst-libs/gst/vaapi/gstvaapifilter.c b/gst-libs/gst/vaapi/gstvaapifilter.c index e25b7bc139..891e95af54 100644 --- a/gst-libs/gst/vaapi/gstvaapifilter.c +++ b/gst-libs/gst/vaapi/gstvaapifilter.c @@ -1232,6 +1232,9 @@ gst_vaapi_filter_finalize (GObject * object) GstVaapiFilter *const filter = GST_VAAPI_FILTER (object); guint i; + if (!filter->display) + goto bail; + GST_VAAPI_DISPLAY_LOCK (filter->display); if (filter->operations) { for (i = 0; i < filter->operations->len; i++) { @@ -1255,6 +1258,7 @@ gst_vaapi_filter_finalize (GObject * object) GST_VAAPI_DISPLAY_UNLOCK (filter->display); gst_vaapi_display_replace (&filter->display, NULL); +bail: if (filter->forward_references) { g_array_unref (filter->forward_references); filter->forward_references = NULL; diff --git a/gst/vaapi/gstvaapi.c b/gst/vaapi/gstvaapi.c index 1c4efff52d..324e4badfa 100644 --- a/gst/vaapi/gstvaapi.c +++ b/gst/vaapi/gstvaapi.c @@ -202,7 +202,8 @@ plugin_init (GstPlugin * plugin) g_array_unref (decoders); } - gst_vaapioverlay_register (plugin, display); + if (_gst_vaapi_has_video_processing) + gst_vaapioverlay_register (plugin, display); gst_element_register (plugin, "vaapipostproc", GST_RANK_PRIMARY, GST_TYPE_VAAPIPOSTPROC);