From 0c8ede8565ab7b751e20e6f652467ec3bb49bc78 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Sat, 14 Mar 2015 10:39:06 +0000 Subject: [PATCH] glupload/colorconvert: only copy timestamps if the input buffer != output --- ext/gl/gstglcolorconvertelement.c | 3 +++ ext/gl/gstgluploadelement.c | 7 +++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c index ad4c76547c..a3118f8951 100644 --- a/ext/gl/gstglcolorconvertelement.c +++ b/ext/gl/gstglcolorconvertelement.c @@ -190,6 +190,9 @@ gst_gl_color_convert_element_prepare_output_buffer (GstBaseTransform * bt, *outbuf = gst_gl_color_convert_perform (convert->convert, inbuf); + /* basetransform doesn't unref if they're the same */ + if (inbuf == *outbuf) + gst_buffer_unref (*outbuf); if (*outbuf) gst_buffer_copy_into (*outbuf, inbuf, GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1); diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c index 1a692143dc..056c1beabd 100644 --- a/ext/gl/gstgluploadelement.c +++ b/ext/gl/gstgluploadelement.c @@ -236,13 +236,12 @@ gst_gl_upload_element_prepare_output_buffer (GstBaseTransform * bt, ret = gst_gl_upload_perform_with_buffer (upload->upload, buffer, outbuf); - if (*outbuf) - gst_buffer_copy_into (*outbuf, buffer, - GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1); - /* 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; }