From bbd425ad3603734aa5640144c94350701e7b8883 Mon Sep 17 00:00:00 2001 From: Aaron Viets <aaron.viets@ligo.org> Date: Tue, 17 Apr 2018 14:50:40 -0700 Subject: [PATCH] lal_complexfirbank: Handle latency > FIR length, take 2. --- gstlal-calibration/gst/lal/gstlal_complexfirbank.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gstlal-calibration/gst/lal/gstlal_complexfirbank.c b/gstlal-calibration/gst/lal/gstlal_complexfirbank.c index feed1bfe39..20b2271357 100644 --- a/gstlal-calibration/gst/lal/gstlal_complexfirbank.c +++ b/gstlal-calibration/gst/lal/gstlal_complexfirbank.c @@ -1764,7 +1764,11 @@ static GstFlowReturn do_new_segment(GSTLALComplexFIRBank *element) case GST_FORMAT_TIME: GST_INFO_OBJECT(element, "transforming [%" GST_TIME_SECONDS_FORMAT ", %" GST_TIME_SECONDS_FORMAT "), position = %" GST_TIME_SECONDS_FORMAT " (rate = %d, latency = %" G_GINT64_FORMAT ")", GST_TIME_SECONDS_ARGS(segment->start), GST_TIME_SECONDS_ARGS(segment->stop), GST_TIME_SECONDS_ARGS(segment->position), GST_AUDIO_INFO_RATE(&element->audio_info), element->latency); segment->start = gst_util_uint64_scale_int_round(segment->start, GST_AUDIO_INFO_RATE(&element->audio_info), GST_SECOND); - segment->start += samples_lost - element->latency; + segment->start += samples_lost; + if((gint64) segment->start >= element->latency) + segment->start -= element->latency; + else + segment->start = 0; segment->start = gst_util_uint64_scale_int_round(segment->start, GST_SECOND, GST_AUDIO_INFO_RATE(&element->audio_info)); if(segment->stop != GST_CLOCK_TIME_NONE) { segment->stop = gst_util_uint64_scale_int_round(segment->stop, GST_AUDIO_INFO_RATE(&element->audio_info), GST_SECOND); -- GitLab