From 55dbb25dcc4ba8dd1e8a79786c3b955c17ff12c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Sat, 14 Mar 2015 19:48:21 +0100 Subject: [PATCH] glupload: move meta-data copy into gst-gl library In some upload implementations the out buffer has more than one references, turning the buffer not writable, so it won't be possible to modify its meta-data. This patch moves the meta-data copy before increasing the reference of the out buffer. https://bugzilla.gnome.org/show_bug.cgi?id=746173 --- ext/gl/gstgluploadelement.c | 3 --- gst-libs/gst/gl/gstglupload.c | 6 +++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c index 056c1beabd..a8971d8138 100644 --- a/ext/gl/gstgluploadelement.c +++ b/ext/gl/gstgluploadelement.c @@ -239,9 +239,6 @@ gst_gl_upload_element_prepare_output_buffer (GstBaseTransform * bt, /* basetransform doesn't unref if they're the same */ if (buffer == *outbuf) gst_buffer_unref (*outbuf); - else if (*outbuf) - gst_buffer_copy_into (*outbuf, buffer, - GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1); return ret == GST_GL_UPLOAD_DONE ? GST_FLOW_OK : GST_FLOW_ERROR; } diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c index d675f12625..635477fa1b 100644 --- a/gst-libs/gst/gl/gstglupload.c +++ b/gst-libs/gst/gl/gstglupload.c @@ -1109,8 +1109,12 @@ restart: NEXT_METHOD; } - if (outbuf_ptr) + if (outbuf_ptr) { + if (buffer != upload->priv->outbuf) + gst_buffer_copy_into (upload->priv->outbuf, buffer, + GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1); *outbuf_ptr = gst_buffer_ref (upload->priv->outbuf); + } GST_OBJECT_UNLOCK (upload);