From 920e91e0725b3b50d24490fe2f7554ee366a08f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 8 May 2012 18:45:34 +0100 Subject: [PATCH] rndbuffersize: send SEGMENT event before pushing buffers Conflicts: gst/debugutils/rndbuffersize.c --- gst/debugutils/rndbuffersize.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gst/debugutils/rndbuffersize.c b/gst/debugutils/rndbuffersize.c index 99ffcbe..b23e687 100644 --- a/gst/debugutils/rndbuffersize.c +++ b/gst/debugutils/rndbuffersize.c @@ -23,7 +23,7 @@ */ #ifdef HAVE_CONFIG_H -# include "config.h" +#include "config.h" #endif #include @@ -51,6 +51,8 @@ struct _GstRndBufferSize GstPad *sinkpad, *srcpad; guint64 offset; + + gboolean need_newsegment; }; struct _GstRndBufferSizeClass @@ -259,6 +261,7 @@ gst_rnd_buffer_size_activate_mode (GstPad * pad, GstObject * parent, res = gst_pad_start_task (pad, (GstTaskFunction) gst_rnd_buffer_size_loop, self); + self->need_newsegment = TRUE; } else { GST_INFO_OBJECT (self, "stopping pull"); res = gst_pad_stop_task (pad); @@ -302,6 +305,15 @@ gst_rnd_buffer_size_loop (GstRndBufferSize * self) GST_WARNING_OBJECT (self, "short buffer: %u bytes", size); } + if (self->need_newsegment) { + GstSegment segment; + + gst_segment_init (&segment, GST_FORMAT_BYTES); + segment.start = self->offset; + gst_pad_push_event (self->srcpad, gst_event_new_segment (&segment)); + self->need_newsegment = FALSE; + } + self->offset += size; ret = gst_pad_push (self->srcpad, buf); -- 2.7.4