diff --git a/ChangeLog b/ChangeLog index ecca23c2c4..2864a91eb7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-11-23 Wim Taymans <wim@fluendo.com> + + * gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_read): + If we are reading too slowly, jump forward in the ringbuffer + instead of blocking. + 2005-11-23 Jan Schmidt <thaytan@mad.scientist.com> * ext/libvisual/visual.c: (gst_visual_src_setcaps), (get_buffer), diff --git a/gst-libs/gst/audio/gstringbuffer.c b/gst-libs/gst/audio/gstringbuffer.c index 2d3380a743..0ac8c08b40 100644 --- a/gst-libs/gst/audio/gstringbuffer.c +++ b/gst-libs/gst/audio/gstringbuffer.c @@ -1183,6 +1183,12 @@ gst_ring_buffer_read (GstRingBuffer * buf, guint64 sample, guchar * data, if (diff > 0 && diff < segtotal) break; + /* flush if diff has grown bigger than ringbuffer */ + if (diff >= segtotal) { + gst_ring_buffer_clear_all (buf); + buf->segdone = readseg; + } + /* else we need to wait for the segment to become readable. */ if (!wait_segment (buf)) goto not_started;