gst-libs/gst/audio/gstringbuffer.c: If we are reading too slowly, jump forward in...
authorWim Taymans <wim.taymans@gmail.com>
Wed, 23 Nov 2005 13:29:50 +0000 (13:29 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 23 Nov 2005 13:29:50 +0000 (13:29 +0000)
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_read):
If we are reading too slowly, jump forward in the ringbuffer
instead of blocking.

ChangeLog
gst-libs/gst/audio/gstringbuffer.c

index ecca23c..2864a91 100644 (file)
--- 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),
index 2d3380a..0ac8c08 100644 (file)
@@ -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;