From c9428c96b1ad3dc3ffd9b3041d316f0d1e95e28a Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Tue, 10 Jul 2012 18:32:13 +0200 Subject: [PATCH] baseaudiosink: Resync when ringbuffer resets When the ringbuffer gets restarted (like in setcaps), we *will* have to resync against the new values. Without this we end up blindly assuming the new samples align to the old ones. --- gst-libs/gst/audio/gstaudiobasesink.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c index 3c5bc29118..6997a9c979 100644 --- a/gst-libs/gst/audio/gstaudiobasesink.c +++ b/gst-libs/gst/audio/gstaudiobasesink.c @@ -903,6 +903,12 @@ gst_audio_base_sink_setcaps (GstBaseSink * bsink, GstCaps * caps) if (!gst_audio_ring_buffer_acquire (sink->ringbuffer, spec)) goto acquire_error; + /* We need to resync since the ringbuffer restarted */ + sink->priv->avg_skew = -1; + sink->next_sample = -1; + sink->priv->eos_time = -1; + sink->priv->discont_time = -1; + if (bsink->pad_mode == GST_PAD_MODE_PUSH) { GST_DEBUG_OBJECT (sink, "activate ringbuffer"); gst_audio_ring_buffer_activate (sink->ringbuffer, TRUE);