From: Michael Olbrich Date: Wed, 4 Jul 2018 07:21:00 +0000 (+0200) Subject: glupload: handle upload methods with different caps X-Git-Tag: 1.19.3~511^2~1493 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=87336b19577b7677c0574e8cb4c4914f6d934b81;p=platform%2Fupstream%2Fgstreamer.git glupload: handle upload methods with different caps If a upload method is selected then use it exclusively in transform_caps(). Also, reconfigure if the current caps don't match the current upload method. https://bugzilla.gnome.org/show_bug.cgi?id=783521 --- diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c index d609c8a..605ae88 100644 --- a/gst-libs/gst/gl/gstglupload.c +++ b/gst-libs/gst/gl/gstglupload.c @@ -1662,6 +1662,10 @@ gst_gl_upload_transform_caps (GstGLUpload * upload, GstGLContext * context, GstCaps *result, *tmp; gint i; + if (upload->priv->method) + return upload->priv->method->transform_caps (upload->priv->method_impl, + context, direction, caps); + tmp = gst_caps_new_empty (); for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) { @@ -1849,6 +1853,15 @@ restart: } goto restart; } else if (ret == GST_GL_UPLOAD_DONE || ret == GST_GL_UPLOAD_RECONFIGURE) { + if (last_impl != upload->priv->method_impl) { + GstCaps *caps = gst_gl_upload_transform_caps (upload, upload->context, + GST_PAD_SINK, upload->priv->in_caps, NULL); + if (!gst_caps_is_equal (upload->priv->out_caps, caps)) { + gst_buffer_replace (&outbuf, NULL); + ret = GST_GL_UPLOAD_RECONFIGURE; + } + gst_caps_unref (caps); + } /* we are done */ } else { upload->priv->method_impl = NULL;