diff options
-rw-r--r-- | gst/filter/gstbpwsinc.c | 5 |
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); |