diff --git a/gst/elements/gstbufferstore.c b/gst/elements/gstbufferstore.c index dd17216756..f399ab4d61 100644 --- a/gst/elements/gstbufferstore.c +++ b/gst/elements/gstbufferstore.c @@ -215,10 +215,12 @@ gst_buffer_store_add_buffer_func (GstBufferStore *store, GstBuffer *buffer) /* we have data to insert */ if (start_offset > GST_BUFFER_OFFSET (buffer) || GST_BUFFER_OFFSET (buffer) + GST_BUFFER_SIZE (buffer) > GST_BUFFER_OFFSET (current)) { + GstBuffer *sub; + /* need a subbuffer */ start_offset = GST_BUFFER_OFFSET (buffer) > start_offset ? 0 : start_offset - GST_BUFFER_OFFSET (buffer); - GstBuffer* sub = gst_buffer_create_sub (buffer, start_offset, + sub = gst_buffer_create_sub (buffer, start_offset, MIN (GST_BUFFER_SIZE (buffer), GST_BUFFER_OFFSET (current) - start_offset - GST_BUFFER_OFFSET (buffer))); g_assert (sub); GST_BUFFER_OFFSET (sub) = start_offset + GST_BUFFER_OFFSET (buffer); diff --git a/plugins/elements/gstbufferstore.c b/plugins/elements/gstbufferstore.c index dd17216756..f399ab4d61 100644 --- a/plugins/elements/gstbufferstore.c +++ b/plugins/elements/gstbufferstore.c @@ -215,10 +215,12 @@ gst_buffer_store_add_buffer_func (GstBufferStore *store, GstBuffer *buffer) /* we have data to insert */ if (start_offset > GST_BUFFER_OFFSET (buffer) || GST_BUFFER_OFFSET (buffer) + GST_BUFFER_SIZE (buffer) > GST_BUFFER_OFFSET (current)) { + GstBuffer *sub; + /* need a subbuffer */ start_offset = GST_BUFFER_OFFSET (buffer) > start_offset ? 0 : start_offset - GST_BUFFER_OFFSET (buffer); - GstBuffer* sub = gst_buffer_create_sub (buffer, start_offset, + sub = gst_buffer_create_sub (buffer, start_offset, MIN (GST_BUFFER_SIZE (buffer), GST_BUFFER_OFFSET (current) - start_offset - GST_BUFFER_OFFSET (buffer))); g_assert (sub); GST_BUFFER_OFFSET (sub) = start_offset + GST_BUFFER_OFFSET (buffer);