summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gst-libs/gst/audio/gstaudiobasesrc.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/gst-libs/gst/audio/gstaudiobasesrc.c b/gst-libs/gst/audio/gstaudiobasesrc.c
index 9bfee07df..3480ee7b8 100644
--- a/gst-libs/gst/audio/gstaudiobasesrc.c
+++ b/gst-libs/gst/audio/gstaudiobasesrc.c
@@ -305,21 +305,26 @@ gst_audio_base_src_get_time (GstClock * clock, GstAudioBaseSrc * src)
guint64 raw, samples;
guint delay;
GstClockTime result;
+ GstAudioRingBuffer *ringbuffer;
+ gint rate;
+
+ ringbuffer = src->ringbuffer;
+ if (!ringbuffer)
+ return GST_CLOCK_TIME_NONE;
- if (G_UNLIKELY (src->ringbuffer == NULL
- || src->ringbuffer->spec.info.rate == 0))
+ rate = ringbuffer->spec.info.rate;
+ if (rate == 0)
return GST_CLOCK_TIME_NONE;
- raw = samples = gst_audio_ring_buffer_samples_done (src->ringbuffer);
+ raw = samples = gst_audio_ring_buffer_samples_done (ringbuffer);
/* the number of samples not yet processed, this is still queued in the
* device (not yet read for capture). */
- delay = gst_audio_ring_buffer_delay (src->ringbuffer);
+ delay = gst_audio_ring_buffer_delay (ringbuffer);
samples += delay;
- result = gst_util_uint64_scale_int (samples, GST_SECOND,
- src->ringbuffer->spec.info.rate);
+ result = gst_util_uint64_scale_int (samples, GST_SECOND, rate);
GST_DEBUG_OBJECT (src,
"processed samples: raw %" G_GUINT64_FORMAT ", delay %u, real %"