audiobuffersplit: Use input running time for comparison instead of the currently...
authorSebastian Dröge <sebastian@centricular.com>
Thu, 21 Jul 2022 13:10:18 +0000 (16:10 +0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 22 Jul 2022 08:01:45 +0000 (08:01 +0000)
Otherwise gapless mode would do completely wrong calculations on
discontinuities and cause input/output to drift slowly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2780>

subprojects/gst-plugins-bad/gst/audiobuffersplit/gstaudiobuffersplit.c

index 1d0b03e..32c8a27 100644 (file)
@@ -549,14 +549,14 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
         GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
 
     new_offset =
-        gst_util_uint64_scale (current_rt - self->resync_rt,
+        gst_util_uint64_scale (input_rt - self->resync_rt,
         rate * ABS (self->in_segment.rate), GST_SECOND);
-    if (current_rt < self->resync_rt) {
+    if (input_rt < self->resync_rt) {
       guint64 drop_samples;
 
       new_offset =
           gst_util_uint64_scale (self->resync_rt -
-          current_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
+          input_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
       drop_samples = self->current_offset + avail_samples + new_offset;
 
       GST_DEBUG_OBJECT (self,