diff --git a/ChangeLog b/ChangeLog index a7f8e2b41a..31c1ef2607 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-21 Stefan Kost + + * plugins/elements/gstqueue.c: + Ensure that buffer metadata is writeable, before modifying. Spotted by + Mike. + 2008-02-20 Stefan Kost * plugins/elements/gstqueue.c: diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c index 3a06a2882f..5475ca02a7 100644 --- a/plugins/elements/gstqueue.c +++ b/plugins/elements/gstqueue.c @@ -919,7 +919,14 @@ gst_queue_chain (GstPad * pad, GstBuffer * buffer) } if (queue->tail_needs_discont) { - GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + GstBuffer *subbuffer = gst_buffer_make_metadata_writable (buffer); + + if (subbuffer) { + buffer = subbuffer; + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + } else { + GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT"); + } queue->tail_needs_discont = FALSE; } @@ -991,7 +998,14 @@ next: caps = GST_BUFFER_CAPS (buffer); if (queue->head_needs_discont) { - GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + GstBuffer *subbuffer = gst_buffer_make_metadata_writable (buffer); + + if (subbuffer) { + buffer = subbuffer; + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + } else { + GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT"); + } queue->head_needs_discont = FALSE; }