From 077d96dec3e4ade5d2082b62a7aece62fc43dd79 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 18 Aug 2008 09:59:18 +0000 Subject: [PATCH] libs/gst/base/gstbasetransform.c: If the element is configured in passthrough mode but the prepare_output_buffer gave... Original commit message from CVS: * libs/gst/base/gstbasetransform.c: (gst_base_transform_prepare_output_buffer): If the element is configured in passthrough mode but the prepare_output_buffer gave us a new output buffer, discard that buffer and reuse the input buffer. --- ChangeLog | 8 ++++++++ libs/gst/base/gstbasetransform.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index 44483806be..b8fa4d0aa9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-08-18 Wim Taymans + + * libs/gst/base/gstbasetransform.c: + (gst_base_transform_prepare_output_buffer): + If the element is configured in passthrough mode but the + prepare_output_buffer gave us a new output buffer, discard that buffer + and reuse the input buffer. + 2008-08-15 Wim Taymans Patch by: Ole André Vadla Ravnås diff --git a/libs/gst/base/gstbasetransform.c b/libs/gst/base/gstbasetransform.c index ae21d1081a..59576147b9 100644 --- a/libs/gst/base/gstbasetransform.c +++ b/libs/gst/base/gstbasetransform.c @@ -1236,6 +1236,13 @@ gst_base_transform_prepare_output_buffer (GstBaseTransform * trans, *out_buf = in_buf; } } else { + if (trans->passthrough && in_buf != *out_buf) { + /* we are asked to perform a passthrough transform but the input and + * output buffers are different. We have to discard the output buffer and + * reuse the input buffer. */ + GST_DEBUG_OBJECT (trans, "passthrough but different buffers"); + discard = TRUE; + } if (discard) { GST_DEBUG_OBJECT (trans, "discard buffer, reuse input buffer"); gst_buffer_unref (*out_buf);