diff options
-rw-r--r-- | gst-libs/gst/audio/gstaudioringbuffer.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gst-libs/gst/audio/gstaudioringbuffer.c b/gst-libs/gst/audio/gstaudioringbuffer.c index 7f4b17b01..1fa711ef8 100644 --- a/gst-libs/gst/audio/gstaudioringbuffer.c +++ b/gst-libs/gst/audio/gstaudioringbuffer.c @@ -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; |