gst-libs/gst/audio/gstringbuffer.*: Added function to clear the ringbuffer.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 24 Aug 2005 11:29:10 +0000 (11:29 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 24 Aug 2005 11:29:10 +0000 (11:29 +0000)
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_set_sample),
(gst_ring_buffer_clear_all):
* gst-libs/gst/audio/gstringbuffer.h:
Added function to clear the ringbuffer.

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

index a597f6b..b83fe6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-08-24  Wim Taymans  <wim@fluendo.com>
+
+       * gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_set_sample),
+       (gst_ring_buffer_clear_all):
+       * gst-libs/gst/audio/gstringbuffer.h:
+       Added function to clear the ringbuffer.
+
 2005-08-24  Andy Wingo  <wingo@pobox.com>
 
        * sys/v4l/gstv4lelement.c (gst_v4lelement_start) 
index 765d07b..d569475 100644 (file)
@@ -822,8 +822,6 @@ gst_ring_buffer_samples_done (GstRingBuffer * buf)
 void
 gst_ring_buffer_set_sample (GstRingBuffer * buf, guint64 sample)
 {
-  gint i;
-
   g_return_if_fail (buf != NULL);
 
   if (sample == -1)
@@ -838,13 +836,33 @@ gst_ring_buffer_set_sample (GstRingBuffer * buf, guint64 sample)
   buf->segbase = buf->segdone - sample / buf->samples_per_seg;
   buf->next_sample = sample;
 
+  gst_ring_buffer_clear_all (buf);
+
+  GST_DEBUG ("set sample to %llu, segbase %d", sample, buf->segbase);
+}
+
+/**
+ * gst_ring_buffer_clear_all:
+ * @buf: the #GstRingBuffer to clear
+ *
+ * Fill the ringbuffer with silence.
+ *
+ * MT safe.
+ */
+void
+gst_ring_buffer_clear_all (GstRingBuffer * buf)
+{
+  gint i;
+
+  g_return_if_fail (buf != NULL);
+  g_return_if_fail (buf->spec.segtotal > 0);
+
   for (i = 0; i < buf->spec.segtotal; i++) {
     gst_ring_buffer_clear (buf, i);
   }
-
-  GST_DEBUG ("set sample to %llu, segbase %d", sample, buf->segbase);
 }
 
+
 static gboolean
 wait_segment (GstRingBuffer * buf)
 {
index bd57c8f..13058d4 100644 (file)
@@ -236,6 +236,9 @@ guint64             gst_ring_buffer_samples_done    (GstRingBuffer *buf);
 
 void           gst_ring_buffer_set_sample      (GstRingBuffer *buf, guint64 sample);
 
+/* clear all segments */
+void           gst_ring_buffer_clear_all       (GstRingBuffer *buf);
+
 /* commit samples */
 guint          gst_ring_buffer_commit          (GstRingBuffer *buf, guint64 sample, 
                                                 guchar *data, guint len);