diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c index 7b3d17146b..1cd5c5eaaf 100644 --- a/ext/gl/gstglimagesink.c +++ b/ext/gl/gstglimagesink.c @@ -687,9 +687,21 @@ gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps) gst_object_unref (oldpool); } + if (glimage_sink->upload) + gst_object_unref (glimage_sink->upload); glimage_sink->upload = gst_object_ref (GST_GL_BUFFER_POOL (newpool)->upload); + if (!gst_gl_upload_init_format (glimage_sink->upload, &vinfo)) + goto upload_error; + return TRUE; + +upload_error: + { + GST_ELEMENT_ERROR (glimage_sink, RESOURCE, NOT_FOUND, + ("%s", "Failed to initialize upload resources"), (NULL)); + return FALSE; + } } static GstFlowReturn