Skip to content
Snippets Groups Projects
Commit 66ca4258 authored by Daichi Tsuna's avatar Daichi Tsuna
Browse files

gstlal_string_triggergen: track offset in outbufs

for obtaining the segments analyzed
parent 0215a27e
No related branches found
No related tags found
No related merge requests found
Pipeline #71678 passed with warnings
...@@ -209,7 +209,7 @@ static GstFlowReturn trigger_generator(GSTLALStringTriggergen *element, GstBuffe ...@@ -209,7 +209,7 @@ static GstFlowReturn trigger_generator(GSTLALStringTriggergen *element, GstBuffe
guint sample; guint sample;
gint channel; gint channel;
length = get_available_samples(element); length = get_available_samples(element);
if(length < autocorrelation_length(element->autocorrelation_matrix)) { if(length < autocorrelation_length(element->autocorrelation_matrix)) {
/* FIXME: PTS and duration are not necessarily correct. /* FIXME: PTS and duration are not necessarily correct.
* they're correct for now because we know how this element * they're correct for now because we know how this element
...@@ -489,6 +489,7 @@ static GstFlowReturn prepare_output_buffer(GstBaseTransform *trans, GstBuffer *i ...@@ -489,6 +489,7 @@ static GstFlowReturn prepare_output_buffer(GstBaseTransform *trans, GstBuffer *i
static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer *outbuf) static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer *outbuf)
{ {
GSTLALStringTriggergen *element = GSTLAL_STRING_TRIGGERGEN(trans); GSTLALStringTriggergen *element = GSTLAL_STRING_TRIGGERGEN(trans);
guint64 length;
GstFlowReturn result; GstFlowReturn result;
g_assert(GST_BUFFER_PTS_IS_VALID(inbuf)); g_assert(GST_BUFFER_PTS_IS_VALID(inbuf));
...@@ -500,7 +501,7 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf ...@@ -500,7 +501,7 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf
gst_audioadapter_clear(element->adapter); gst_audioadapter_clear(element->adapter);
element->t0 = GST_BUFFER_PTS(inbuf); element->t0 = GST_BUFFER_PTS(inbuf);
element->offset0 = GST_BUFFER_OFFSET(inbuf); element->offset0 = GST_BUFFER_OFFSET(inbuf);
element->next_out_offset = 0; element->next_out_offset = GST_BUFFER_OFFSET(inbuf);
} else if(!gst_audioadapter_is_empty(element->adapter)) } else if(!gst_audioadapter_is_empty(element->adapter))
g_assert_cmpuint(GST_BUFFER_PTS(inbuf), ==, gst_audioadapter_expected_timestamp(element->adapter)); g_assert_cmpuint(GST_BUFFER_PTS(inbuf), ==, gst_audioadapter_expected_timestamp(element->adapter));
element->next_in_offset = GST_BUFFER_OFFSET_END(inbuf); element->next_in_offset = GST_BUFFER_OFFSET_END(inbuf);
...@@ -509,17 +510,21 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf ...@@ -509,17 +510,21 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf
* gap logic * gap logic
*/ */
gst_buffer_ref(inbuf);
gst_audioadapter_push(element->adapter, inbuf);
if (!GST_BUFFER_FLAG_IS_SET(inbuf, GST_BUFFER_FLAG_GAP)) { if (!GST_BUFFER_FLAG_IS_SET(inbuf, GST_BUFFER_FLAG_GAP)) {
/* not gaps */ /* not gaps */
gst_buffer_ref(inbuf);
gst_audioadapter_push(element->adapter, inbuf);
result = trigger_generator(element, outbuf); result = trigger_generator(element, outbuf);
} else { } else {
/* gaps */ /* gaps */
GST_BUFFER_PTS(outbuf) = element->t0; length = get_available_samples(element);
GST_BUFFER_DURATION(outbuf) = 0; element->next_out_offset += length;
gst_audioadapter_flush_samples(element->adapter, length);
GST_BUFFER_PTS(outbuf) = element->t0 + gst_util_uint64_scale_int_round(element->next_out_offset - element->offset0, GST_SECOND, GST_AUDIO_INFO_RATE(&element->audio_info));
GST_BUFFER_DURATION(outbuf) = gst_util_uint64_scale_int_round(length, GST_SECOND, GST_AUDIO_INFO_RATE(&element->audio_info));
/* we get no triggers, so outbuf offset is unchanged */ /* we get no triggers, so outbuf offset is unchanged */
GST_BUFFER_OFFSET_END(outbuf) = GST_BUFFER_OFFSET(outbuf); GST_BUFFER_OFFSET_END(outbuf) = GST_BUFFER_OFFSET(outbuf);
GST_BUFFER_FLAG_SET(outbuf, GST_BUFFER_FLAG_GAP);
result = GST_FLOW_OK; result = GST_FLOW_OK;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment