audioringbuffer: start ringbuffer if needed upon commit
authorMark Nauwelaerts <mnauw@users.sourceforge.net>
Thu, 8 Jan 2015 20:20:14 +0000 (21:20 +0100)
committerMark Nauwelaerts <mnauw@users.sourceforge.net>
Sat, 10 Jan 2015 12:03:20 +0000 (13:03 +0100)
... to provide for a running clock.

gst-libs/gst/audio/gstaudioringbuffer.c

index 6624d0dd6bfbde9a279720890a7b6c5d1244a4ba..4220e9d496fd36e502497953a05093573fbfcdda 100644 (file)
@@ -1462,6 +1462,18 @@ default_commit (GstAudioRingBuffer * buf, guint64 * sample,
   g_return_val_if_fail (buf->memory != NULL, -1);
   g_return_val_if_fail (data != NULL, -1);
 
+  /* writing stuff now, ensure running clock */
+  if (G_UNLIKELY (g_atomic_int_get (&buf->state) !=
+          GST_AUDIO_RING_BUFFER_STATE_STARTED)) {
+    /* see if we are allowed to start it */
+    if (G_UNLIKELY (g_atomic_int_get (&buf->may_start) == FALSE)) {
+      GST_DEBUG_OBJECT (buf, "not allowed to start");
+    } else {
+      GST_DEBUG_OBJECT (buf, "start!");
+      gst_audio_ring_buffer_start (buf);
+    }
+  }
+
   need_reorder = buf->need_reorder;
 
   channels = buf->spec.info.channels;