diff options
author | Leo Singer <leo.singer@ligo.org> | 2010-12-16 20:38:31 -0800 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-12-17 19:34:42 +0100 |
commit | d6d2aa44ab5c1cb1a0b83d07d3acf56a312d61a1 (patch) | |
tree | 9dd597db198a651bbafde12b81f5f612083c1e54 /gst/audioresample | |
parent | aac8b216787083030dd41fe434e11d21c197bda4 (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.c | 12 |
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: |