summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gst/filter/gstbpwsinc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gst/filter/gstbpwsinc.c b/gst/filter/gstbpwsinc.c
index a6aefc6e..916fcbe9 100644
--- a/gst/filter/gstbpwsinc.c
+++ b/gst/filter/gstbpwsinc.c
@@ -267,7 +267,7 @@ gst_bpwsinc_sink_connect (GstPad * pad, GstCaps * caps)
}
static void
-gst_bpwsinc_chain (GstPad * pad, GstBuffer * buf)
+gst_bpwsinc_chain (GstPad *pad, GstBuffer *buf)
{
GstBPWSinc *filter;
gfloat *src;
@@ -285,6 +285,9 @@ gst_bpwsinc_chain (GstPad * pad, GstBuffer * buf)
* to make amends we keep the incoming buffer around and write our
* output samples there */
+ /* get a writable buffer */
+ buf = gst_buffer_copy_on_write (buf);
+
src = (gfloat *) GST_BUFFER_DATA (buf);
residue_samples = filter->wing_size * 2 + 1;
input_samples = GST_BUFFER_SIZE (buf) / sizeof (gfloat);