Skip to content
Snippets Groups Projects
Commit 33e4f36a authored by Aaron Viets's avatar Aaron Viets Committed by Kipp Cannon
Browse files

lal_property: A few bug fixes to get it working right.

parent fbd7f177
No related branches found
No related tags found
No related merge requests found
......@@ -223,11 +223,11 @@ static gboolean set_caps(GstBaseSink *sink, GstCaps *caps) {
/* Record the data type */
if(success) {
if(!strchr(name, 'S'))
if(strchr(name, 'S'))
element->data_type = GSTLAL_PROPERTY_SIGNED;
else if(!strchr(name, 'U'))
else if(strchr(name, 'U'))
element->data_type = GSTLAL_PROPERTY_UNSIGNED;
else if(!strchr(name, 'F'))
else if(strchr(name, 'F'))
element->data_type = GSTLAL_PROPERTY_FLOAT;
else
g_assert_not_reached();
......@@ -270,46 +270,49 @@ static GstFlowReturn render(GstBaseSink *sink, GstBuffer *buffer) {
switch(element->data_type) {
case GSTLAL_PROPERTY_SIGNED:
switch(element->unit_size) {
case 8:
case 1:
average_input_data_gint8(element, (gint8 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
case 16:
case 2:
average_input_data_gint16(element, (gint16 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
case 32:
case 4:
average_input_data_gint32(element, (gint32 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
default:
g_assert_not_reached();
break;
}
break;
case GSTLAL_PROPERTY_UNSIGNED:
switch(element->unit_size) {
case 8:
case 1:
average_input_data_guint8(element, (guint8 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
case 16:
case 2:
average_input_data_guint16(element, (guint16 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
case 32:
case 4:
average_input_data_guint32(element, (guint32 *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
default:
g_assert_not_reached();
break;
}
break;
case GSTLAL_PROPERTY_FLOAT:
switch(element->unit_size) {
case 32:
case 4:
average_input_data_float(element, (float *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
case 64:
case 8:
average_input_data_double(element, (double *) mapinfo.data, mapinfo.size / element->unit_size, GST_BUFFER_PTS(buffer));
break;
default:
g_assert_not_reached();
break;
}
break;
default:
g_assert_not_reached();
break;
......
#!/usr/bin/env python
# Copyright (C) 2018 Aaron Viets
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# =============================================================================
#
# Preamble
#
# =============================================================================
#
import numpy
import sys
from gstlal import pipeparts
from gstlal import calibration_parts
import test_common
#
# =============================================================================
#
# Pipelines
#
# =============================================================================
#
def lal_property_test_01(pipeline, name):
#
# This test makes a stream changing between 2's and 8's.
# It should square the 2's and take the 8's to the 8th power.
#
rate = 512 # Hz
width = 64
buffer_length = 1.0 # seconds
test_duration = 100.0 # seconds
gap_frequency = 0.1 # Hz
gap_threshold = 0.0
control_dump_filename = "control_property_test_01.dump"
bad_data_intervals2 = [0.0, 1e35]
bad_data_intervals = [-1e35, 1e-35]
head = test_common.test_src(pipeline, buffer_length = buffer_length, rate = rate, width = width, channels = 1, test_duration = test_duration, wave = 0, freq = 0.1, volume = 1)
head = pipeparts.mkgeneric(pipeline, head, "lal_insertgap", bad_data_intervals = bad_data_intervals, insert_gap = False, fill_discont = True, replace_value = 2.0)
head = pipeparts.mkgeneric(pipeline, head, "lal_insertgap", bad_data_intervals = bad_data_intervals2, insert_gap = False, fill_discont = True, replace_value = 8.0)
head = pipeparts.mktee(pipeline, head)
pipeparts.mknxydumpsink(pipeline, head, "%s_in.dump" % name)
lal_prop_exponent = pipeparts.mkgeneric(pipeline, head, "lal_property", update_when_change = True)
head = calibration_parts.mkpow(pipeline, head, exponent = 0.0)
lal_prop_exponent.connect("notify::current-average", calibration_parts.update_property_simple, head, "current_average", "exponent")
pipeparts.mknxydumpsink(pipeline, head, "%s_out.dump" % name)
#
# done
#
return pipeline
#
# =============================================================================
#
# Main
#
# =============================================================================
#
test_common.build_and_run(lal_property_test_01, "lal_property_test_01")
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