+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)
void
gst_ring_buffer_set_sample (GstRingBuffer * buf, guint64 sample)
{
- gint i;
-
g_return_if_fail (buf != NULL);
if (sample == -1)
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)
{
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);