diff --git a/subprojects/gst-plugins-bad/sys/va/gstvadecoder.c b/subprojects/gst-plugins-bad/sys/va/gstvadecoder.c index 7eab505fe8..99de6b61ce 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvadecoder.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvadecoder.c @@ -197,6 +197,8 @@ gst_va_decoder_new (GstVaDisplay * display, guint32 codec) g_return_val_if_fail (GST_IS_VA_DISPLAY (display), NULL); self = g_object_new (GST_TYPE_VA_DECODER, "display", display, NULL); + gst_object_ref_sink (self); + if (!gst_va_decoder_initialize (self, codec)) gst_clear_object (&self); diff --git a/subprojects/gst-plugins-bad/sys/va/gstvaencoder.c b/subprojects/gst-plugins-bad/sys/va/gstvaencoder.c index 923f4ed52b..09975f758e 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvaencoder.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvaencoder.c @@ -576,6 +576,8 @@ gst_va_encoder_new (GstVaDisplay * display, guint32 codec, self = g_object_new (GST_TYPE_VA_ENCODER, "display", display, "va-entrypoint", entrypoint, NULL); + gst_object_ref_sink (self); + if (!gst_va_encoder_initialize (self, codec)) gst_clear_object (&self); diff --git a/subprojects/gst-plugins-bad/sys/va/gstvafilter.c b/subprojects/gst-plugins-bad/sys/va/gstvafilter.c index 98e433887c..05dff45101 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvafilter.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvafilter.c @@ -171,9 +171,14 @@ gst_va_filter_init (GstVaFilter * self) GstVaFilter * gst_va_filter_new (GstVaDisplay * display) { + GstVaFilter *self; + g_return_val_if_fail (GST_IS_VA_DISPLAY (display), NULL); - return g_object_new (GST_TYPE_VA_FILTER, "display", display, NULL); + self = g_object_new (GST_TYPE_VA_FILTER, "display", display, NULL); + gst_object_ref_sink (self); + + return self; } gboolean