summaryrefslogtreecommitdiff
path: root/gst/audioresample
diff options
context:
space:
mode:
authorLeo Singer <leo.singer@ligo.org>2010-12-16 20:38:31 -0800
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2010-12-17 19:34:42 +0100
commitd6d2aa44ab5c1cb1a0b83d07d3acf56a312d61a1 (patch)
tree9dd597db198a651bbafde12b81f5f612083c1e54 /gst/audioresample
parentaac8b216787083030dd41fe434e11d21c197bda4 (diff)
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
Diffstat (limited to 'gst/audioresample')
-rw-r--r--gst/audioresample/gstaudioresample.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c
index 8d0bddf22..a9222a645 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: