From d6d2aa44ab5c1cb1a0b83d07d3acf56a312d61a1 Mon Sep 17 00:00:00 2001 From: Leo Singer Date: Thu, 16 Dec 2010 20:38:31 -0800 Subject: [PATCH] audioresample: push half a history length, instead of a full history length, at end-of-stream so that output segment and input segment have same duration --- gst/audioresample/gstaudioresample.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c index 8d0bddf..a9222a6 100644 --- a/gst/audioresample/gstaudioresample.c +++ b/gst/audioresample/gstaudioresample.c @@ -954,8 +954,10 @@ gst_audio_resample_event (GstBaseTransform * base, GstEvent * event) resample->need_discont = TRUE; break; case GST_EVENT_NEWSEGMENT: - if (resample->state) - gst_audio_resample_push_drain (resample, resample->num_nongap_samples); + if (resample->state) { + guint latency = resample->funcs->get_input_latency (resample->state); + gst_audio_resample_push_drain (resample, latency); + } gst_audio_resample_reset_state (resample); if (resample->state) resample->funcs->skip_zeros (resample->state); @@ -969,8 +971,10 @@ gst_audio_resample_event (GstBaseTransform * base, GstEvent * event) resample->need_discont = TRUE; break; case GST_EVENT_EOS: - if (resample->state) - gst_audio_resample_push_drain (resample, resample->num_nongap_samples); + if (resample->state) { + guint latency = resample->funcs->get_input_latency (resample->state); + gst_audio_resample_push_drain (resample, latency); + } gst_audio_resample_reset_state (resample); break; default: -- 2.7.4