From 57a15cf7e71c062dac2fb3ce444ab98b419b617d Mon Sep 17 00:00:00 2001 From: Aaron Viets <aaron.viets@ligo.org> Date: Tue, 21 Aug 2018 10:40:08 -0700 Subject: [PATCH] lal_dqtukey: Needed a transform_caps() function. Other small bug fixes. --- gstlal-calibration/gst/lal/gstlal_dqtukey.c | 157 ++++++++++++++------ gstlal-calibration/gst/lal/gstlal_dqtukey.h | 1 + gstlal-calibration/tests/test_common.py | 38 ++--- 3 files changed, 129 insertions(+), 67 deletions(-) diff --git a/gstlal-calibration/gst/lal/gstlal_dqtukey.c b/gstlal-calibration/gst/lal/gstlal_dqtukey.c index 6e559913c3..129bc0a80f 100644 --- a/gstlal-calibration/gst/lal/gstlal_dqtukey.c +++ b/gstlal-calibration/gst/lal/gstlal_dqtukey.c @@ -59,7 +59,7 @@ #define DEFINE_DQ_TO_TUKEY(INTYPE, WIDTH, OUTTYPE) \ -static void dq_g ## INTYPE ## WIDTH ## _to_tukey_ ## OUTTYPE(const g ## INTYPE ## WIDTH *src, gint64 src_size, OUTTYPE *dst, enum gstlal_dqtukey_state *state, guint32 required_on, guint32 required_on_xor_off, OUTTYPE *ramp, gint64 transition_samples, gint64 *ramp_up_index, gint64 *ramp_down_index, int num_cycle_in, int num_cycle_out, gint64 *num_leftover, gint64 *num_since_bad, gboolean invert_window, gboolean invert_control) { \ +static void dq_g ## INTYPE ## WIDTH ## _to_tukey_ ## OUTTYPE(const g ## INTYPE ## WIDTH *src, gint64 src_size, OUTTYPE *dst, enum gstlal_dqtukey_state *state, guint32 required_on, guint32 required_on_xor_off, OUTTYPE *ramp, gint64 transition_samples, gint64 *ramp_up_index, gint64 *ramp_down_index, int num_cycle_in, int num_cycle_out, gint64 *num_leftover, int *remainder, gint64 *num_since_bad, gboolean invert_window, gboolean invert_control) { \ \ gint64 i, i_stop; \ i = 0; \ @@ -130,15 +130,15 @@ start: \ *state = ZEROS; \ else \ *state = RAMP_UP; \ - *num_leftover = 0; \ + *num_leftover = transition_samples; \ return; \ } else { \ /* Decide what we should do with the next data on this buffer */ \ if(*num_since_bad == *num_leftover) { \ - *num_leftover = 0; \ + *num_leftover = transition_samples; \ goto ones; \ } \ - *num_leftover = 0; \ + *num_leftover = transition_samples; \ if(*num_since_bad <= transition_samples) \ goto zeros; \ else \ @@ -148,13 +148,13 @@ start: \ ones: \ /* Deal with any output samples that still need to be produced from the last input */ \ if(invert_window) { \ - for(j = 0; j < *num_leftover; j++, dst++) \ + for(j = 0; j < *remainder; j++, dst++) \ *dst = 0.0; \ } else { \ - for(j = 0; j < *num_leftover; j++, dst++) \ + for(j = 0; j < *remainder; j++, dst++) \ *dst = 1.0; \ } \ - *num_leftover = 0; \ + *remainder = 0; \ while(i < src_size) { \ if((gboolean) ((src[i] ^ required_on) & required_on_xor_off) == invert_control) { \ /* Conditions were met */ \ @@ -181,13 +181,13 @@ ones: \ zeros: \ /* Deal with any output samples that still need to be produced from the last input */ \ if(invert_window) { \ - for(j = 0; j < *num_leftover; j++, dst++) \ + for(j = 0; j < *remainder; j++, dst++) \ *dst = 1.0; \ } else { \ - for(j = 0; j < *num_leftover; j++, dst++) \ + for(j = 0; j < *remainder; j++, dst++) \ *dst = 0.0; \ } \ - *num_leftover = 0; \ + *remainder = 0; \ while(i < src_size) { \ if((gboolean) ((src[i] ^ required_on) & required_on_xor_off) == invert_control) { \ /* Conditions were met */ \ @@ -217,7 +217,7 @@ zeros: \ for(j = 0; j < *num_since_bad - transition_samples; j++, dst++) \ *dst = 0.0; \ } \ - *num_leftover = num_cycle_out - *num_since_bad + transition_samples; \ + *remainder = num_cycle_out - *num_since_bad + transition_samples; \ *state = RAMP_UP; \ goto ramp_up; \ } \ @@ -228,13 +228,13 @@ zeros: \ ramp_up: \ /* Deal with any output samples that still need to be produced from the last input */ \ if(invert_window) { \ - for(j = 0; j < *num_leftover; j++, dst++, (*ramp_up_index)++) \ + for(j = 0; j < *remainder; j++, dst++, (*ramp_up_index)++) \ *dst = 1.0 - ramp[*ramp_up_index]; \ } else { \ - for(j = 0; j < *num_leftover; j++, dst++, (*ramp_up_index)++) \ + for(j = 0; j < *remainder; j++, dst++, (*ramp_up_index)++) \ *dst = ramp[*ramp_up_index]; \ } \ - *num_leftover = 0; \ + *remainder = 0; \ while(i < src_size) { \ if((gboolean) ((src[i] ^ required_on) & required_on_xor_off) == invert_control) { \ /* Conditions were met */ \ @@ -245,7 +245,7 @@ ramp_up: \ /* The transition is over */ \ *ramp_up_index = 0; \ *state = ONES; \ - *num_leftover = (num_cycle_out - j) % num_cycle_out; \ + *remainder = (num_cycle_out - j) % num_cycle_out; \ i++; \ goto ones; \ } \ @@ -284,7 +284,7 @@ ramp_down: \ /* The transition is over */ \ *ramp_down_index = 0; \ *state = ZEROS; \ - *num_leftover = (num_cycle_out - j) % num_cycle_out; \ + *remainder = (num_cycle_out - j) % num_cycle_out; \ goto zeros; \ } \ if(invert_window) \ @@ -316,7 +316,7 @@ double_ramp: \ *ramp_up_index = 0; \ *ramp_down_index = 0; \ *state = ZEROS; \ - *num_leftover = (num_cycle_out - j) % num_cycle_out; \ + *remainder = (num_cycle_out - j) % num_cycle_out; \ goto zeros; \ } \ if(invert_window) \ @@ -349,8 +349,8 @@ DEFINE_DQ_TO_TUKEY(uint, 32, double) */ -static void set_metadata(GSTLALDQTukey *element, GstBuffer *buf, guint64 outsamples, gboolean gap) -{ +static void set_metadata(GSTLALDQTukey *element, GstBuffer *buf, guint64 outsamples, gboolean gap) { + GST_BUFFER_OFFSET(buf) = element->next_out_offset; element->next_out_offset += outsamples; GST_BUFFER_OFFSET_END(buf) = element->next_out_offset; @@ -427,8 +427,8 @@ G_DEFINE_TYPE( */ -static gboolean get_unit_size(GstBaseTransform *trans, GstCaps *caps, gsize *size) -{ +static gboolean get_unit_size(GstBaseTransform *trans, GstCaps *caps, gsize *size) { + GstAudioInfo info; gboolean success = TRUE; @@ -443,13 +443,60 @@ static gboolean get_unit_size(GstBaseTransform *trans, GstCaps *caps, gsize *siz } +/* + * transform_caps() + */ + + +static GstCaps *transform_caps(GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps, GstCaps *filter) { + + GstCaps *othercaps = NULL; + + if(gst_caps_get_size(caps) > 1) + GST_WARNING_OBJECT(trans, "not yet smart enough to transform complex formats"); + + switch(direction) { + case GST_PAD_SRC: + /* + * The sink pad caps are always the same, regardless of the caps + * on the source pad. + */ + othercaps = gst_caps_normalize(gst_pad_get_pad_template_caps(GST_BASE_TRANSFORM_SINK_PAD(trans))); + break; + + case GST_PAD_SINK: + /* + * The source pad caps are always the same, regardless of the caps + * on the sink pad. + */ + othercaps = gst_caps_normalize(gst_pad_get_pad_template_caps(GST_BASE_TRANSFORM_SRC_PAD(trans))); + break; + + case GST_PAD_UNKNOWN: + GST_ELEMENT_ERROR(trans, CORE, NEGOTIATION, (NULL), ("invalid direction GST_PAD_UNKNOWN")); + gst_caps_unref(caps); + return GST_CAPS_NONE; + } + + othercaps = gst_caps_simplify(othercaps); + + if(filter) { + GstCaps *intersection = gst_caps_intersect(othercaps, filter); + gst_caps_unref(othercaps); + othercaps = intersection; + } + + return othercaps; +} + + /* * set_caps() */ -static gboolean set_caps(GstBaseTransform *trans, GstCaps *incaps, GstCaps *outcaps) -{ +static gboolean set_caps(GstBaseTransform *trans, GstCaps *incaps, GstCaps *outcaps) { + GSTLALDQTukey *element = GSTLAL_DQTUKEY(trans); gint rate_in, rate_out; gsize unit_size_in, unit_size_out; @@ -530,8 +577,8 @@ static gboolean set_caps(GstBaseTransform *trans, GstCaps *incaps, GstCaps *outc */ -static gboolean transform_size(GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps, gsize size, GstCaps *othercaps, gsize *othersize) -{ +static gboolean transform_size(GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps, gsize size, GstCaps *othercaps, gsize *othersize) { + GSTLALDQTukey *element = GSTLAL_DQTUKEY(trans); gint64 temp_othersize; @@ -568,6 +615,17 @@ static gboolean transform_size(GstBaseTransform *trans, GstPadDirection directio break; case GST_PAD_SINK: + + /* + * convert byte count to samples + */ + + if(G_UNLIKELY(size % element->unit_size_in)) { + GST_DEBUG_OBJECT(element, "buffer size %" G_GSIZE_FORMAT " is not a multiple of unit_size %" G_GSIZE_FORMAT, size, (gsize) element->unit_size_in); + return FALSE; + } + size /= element->unit_size_in; + /* * compute othersize = # of samples to be produced on * source pad from sample count available on sink pad @@ -601,7 +659,7 @@ static gboolean transform_size(GstBaseTransform *trans, GstPadDirection directio */ -static gboolean start(GstBaseTransform *trans) +static gboolean start(GstBaseTransform *trans) { GSTLALDQTukey *element = GSTLAL_DQTUKEY(trans); @@ -615,6 +673,7 @@ static gboolean start(GstBaseTransform *trans) element->ramp_up_index = 0; element->ramp_down_index = 0; element->num_leftover = 0; + element->remainder = 0; element->num_since_bad = 0; if(element->required_on & element->required_off) @@ -630,8 +689,8 @@ static gboolean start(GstBaseTransform *trans) */ -static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer *outbuf) -{ +static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer *outbuf) { + GSTLALDQTukey *element = GSTLAL_DQTUKEY(trans); GstMapInfo inmap, outmap; GstFlowReturn result = GST_FLOW_OK; @@ -649,6 +708,7 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf element->ramp_up_index = 0; element->ramp_down_index = 0; element->num_leftover = 0; + element->remainder = 0; element->num_since_bad = 0; /* If we haven't made a half-Hann window for transitions between zeros and ones yet, do it now */ @@ -687,40 +747,40 @@ static GstFlowReturn transform(GstBaseTransform *trans, GstBuffer *inbuf, GstBuf case 1: if(element->sign) { if(element->unit_size_out == 4) - dq_gint8_to_tukey_float((const gint8 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint8_to_tukey_float((const gint8 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_gint8_to_tukey_double((const gint8 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint8_to_tukey_double((const gint8 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } else { if(element->unit_size_out == 4) - dq_guint8_to_tukey_float((const guint8 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint8_to_tukey_float((const guint8 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_guint8_to_tukey_double((const guint8 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint8_to_tukey_double((const guint8 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } break; case 2: if(element->sign) { if(element->unit_size_out == 4) - dq_gint16_to_tukey_float((const gint16 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint16_to_tukey_float((const gint16 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_gint16_to_tukey_double((const gint16 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint16_to_tukey_double((const gint16 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } else { if(element->unit_size_out == 4) - dq_guint16_to_tukey_float((const guint16 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint16_to_tukey_float((const guint16 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_guint16_to_tukey_double((const guint16 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint16_to_tukey_double((const guint16 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } break; case 4: if(element->sign) { if(element->unit_size_out == 4) - dq_gint32_to_tukey_float((const gint32 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint32_to_tukey_float((const gint32 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_gint32_to_tukey_double((const gint32 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_gint32_to_tukey_double((const gint32 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } else { if(element->unit_size_out == 4) - dq_guint32_to_tukey_float((const guint32 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint32_to_tukey_float((const guint32 *) inmap.data, src_size, (float *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); else - dq_guint32_to_tukey_double((const guint32 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->num_since_bad, element->invert_window, element->invert_control); + dq_guint32_to_tukey_double((const guint32 *) inmap.data, src_size, (double *) outmap.data, &element->state, element->required_on, element->required_on_xor_off, element->ramp, element->transition_samples, &element->ramp_up_index, &element->ramp_down_index, element->num_cycle_in, element->num_cycle_out, &element->num_leftover, &element->remainder, &element->num_since_bad, element->invert_window, element->invert_control); } break; default: @@ -762,8 +822,8 @@ enum property { }; -static void set_property(GObject *object, enum property prop_id, const GValue *value, GParamSpec *pspec) -{ +static void set_property(GObject *object, enum property prop_id, const GValue *value, GParamSpec *pspec) { + GSTLALDQTukey *element = GSTLAL_DQTUKEY(object); GST_OBJECT_LOCK(element); @@ -798,8 +858,8 @@ static void set_property(GObject *object, enum property prop_id, const GValue *v } -static void get_property(GObject *object, enum property prop_id, GValue *value, GParamSpec *pspec) -{ +static void get_property(GObject *object, enum property prop_id, GValue *value, GParamSpec *pspec) { + GSTLALDQTukey *element = GSTLAL_DQTUKEY(object); GST_OBJECT_LOCK(element); @@ -839,8 +899,8 @@ static void get_property(GObject *object, enum property prop_id, GValue *value, */ -static void gstlal_dqtukey_class_init(GSTLALDQTukeyClass *klass) -{ +static void gstlal_dqtukey_class_init(GSTLALDQTukeyClass *klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS(klass); GstElementClass *element_class = GST_ELEMENT_CLASS(klass); GstBaseTransformClass *transform_class = GST_BASE_TRANSFORM_CLASS(klass); @@ -848,6 +908,7 @@ static void gstlal_dqtukey_class_init(GSTLALDQTukeyClass *klass) gobject_class->set_property = GST_DEBUG_FUNCPTR(set_property); gobject_class->get_property = GST_DEBUG_FUNCPTR(get_property); + transform_class->transform_caps = GST_DEBUG_FUNCPTR(transform_caps); transform_class->transform_size = GST_DEBUG_FUNCPTR(transform_size); transform_class->get_unit_size = GST_DEBUG_FUNCPTR(get_unit_size); transform_class->set_caps = GST_DEBUG_FUNCPTR(set_caps); @@ -936,8 +997,8 @@ static void gstlal_dqtukey_class_init(GSTLALDQTukeyClass *klass) */ -static void gstlal_dqtukey_init(GSTLALDQTukey *element) -{ +static void gstlal_dqtukey_init(GSTLALDQTukey *element) { + element->rate_in = 0; element->rate_out = 0; element->unit_size_in = 0; diff --git a/gstlal-calibration/gst/lal/gstlal_dqtukey.h b/gstlal-calibration/gst/lal/gstlal_dqtukey.h index 7ef5ea5ea2..a20aec28f9 100644 --- a/gstlal-calibration/gst/lal/gstlal_dqtukey.h +++ b/gstlal-calibration/gst/lal/gstlal_dqtukey.h @@ -91,6 +91,7 @@ struct _GSTLALDQTukey { gint64 ramp_up_index; gint64 ramp_down_index; gint64 num_leftover; + int remainder; gint64 num_since_bad; void *ramp; diff --git a/gstlal-calibration/tests/test_common.py b/gstlal-calibration/tests/test_common.py index 929a85bda7..2ef5b7d9ca 100644 --- a/gstlal-calibration/tests/test_common.py +++ b/gstlal-calibration/tests/test_common.py @@ -17,7 +17,7 @@ # # ============================================================================= # -# Preamble +# Preamble # # ============================================================================= # @@ -51,14 +51,14 @@ else: # # ============================================================================= # -# Utilities +# Utilities # # ============================================================================= # def complex_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, test_duration = 10.0, wave = 5, freq = 0, is_live = False, verbose = True): - head = pipeparts.mkaudiotestsrc(pipeline, wave = wave, freq = freq, blocksize = 8 * int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length), is_live = is_live) + head = pipeparts.mkaudiotestsrc(pipeline, wave = wave, freq = freq, samplesperbuffer = int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length), is_live = is_live) head = pipeparts.mkcapsfilter(pipeline, head, "audio/x-raw, format=Z%d%s, rate=%d, channels=2" % (width, BYTE_ORDER, rate)) head = pipeparts.mktogglecomplex(pipeline, head) if verbose: @@ -66,11 +66,11 @@ def complex_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, tes return head def int_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, channels = 1, test_duration = 10.0, wave = 5, freq = 0, is_live = False, verbose = True): - head = pipeparts.mkaudiotestsrc(pipeline, wave = wave, freq = freq, blocksize = 8 * int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length), is_live = is_live) - head = pipeparts.mkcapsfilter(pipeline, head, "audio/x-raw, format=S%d%s, rate=%d, channels=%d" % (width, BYTE_ORDER, rate, channels)) - if verbose: - head = pipeparts.mkprogressreport(pipeline, head, "src") - return head + head = pipeparts.mkaudiotestsrc(pipeline, wave = wave, freq = freq, samplesperbuffer = int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length), is_live = is_live) + head = pipeparts.mkcapsfilter(pipeline, head, "audio/x-raw, format=S%d%s, rate=%d, channels=%d" % (width, BYTE_ORDER, rate, channels)) + if verbose: + head = pipeparts.mkprogressreport(pipeline, head, "src") + return head def test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, channels = 1, test_duration = 10.0, wave = 5, freq = 0, volume = 1, is_live = False, verbose = True): if wave == "ligo": @@ -95,15 +95,15 @@ def gapped_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, chan return pipeparts.mkgate(pipeline, src, control = control, threshold = gap_threshold) def gapped_int_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, channels = 1, test_duration = 10.0, wave = 5, freq = 0, gap_frequency = None, gap_threshold = None, control_dump_filename = None, is_live = False, verbose = True): - src = int_test_src(pipeline, buffer_length = buffer_length, rate = rate, width = width, channels = channels, test_duration = test_duration, wave = wave, freq = freq, is_live = is_live, verbose = verbose) - if gap_frequency is None: - return src - control = pipeparts.mkcapsfilter(pipeline, pipeparts.mkaudiotestsrc(pipeline, wave = 0, freq = gap_frequency, blocksize = 8 * int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length)), "audio/x-raw, format=F32%s, rate=%d, channels=1" % (BYTE_ORDER, rate)) - if control_dump_filename is not None: - control = pipeparts.mktee(pipeline, control) - pipeparts.mknxydumpsink(pipeline, pipeparts.mkqueue(pipeline, control), control_dump_filename) - control = pipeparts.mkqueue(pipeline, control) - return pipeparts.mkgate(pipeline, src, control = control, threshold = gap_threshold) + src = int_test_src(pipeline, buffer_length = buffer_length, rate = rate, width = width, channels = channels, test_duration = test_duration, wave = wave, freq = freq, is_live = is_live, verbose = verbose) + if gap_frequency is None: + return src + control = pipeparts.mkcapsfilter(pipeline, pipeparts.mkaudiotestsrc(pipeline, wave = 0, freq = gap_frequency, blocksize = 8 * int(buffer_length * rate), volume = 1, num_buffers = int(test_duration / buffer_length)), "audio/x-raw, format=F32%s, rate=%d, channels=1" % (BYTE_ORDER, rate)) + if control_dump_filename is not None: + control = pipeparts.mktee(pipeline, control) + pipeparts.mknxydumpsink(pipeline, pipeparts.mkqueue(pipeline, control), control_dump_filename) + control = pipeparts.mkqueue(pipeline, control) + return pipeparts.mkgate(pipeline, src, control = control, threshold = gap_threshold) def gapped_complex_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = 64, test_duration = 10.0, wave = 5, freq = 0, gap_frequency = None, gap_threshold = None, control_dump_filename = None, tags = None, is_live = False, verbose = True): src = complex_test_src(pipeline, buffer_length = buffer_length, rate = rate, width = width, test_duration = test_duration, wave = wave, freq = freq, is_live = is_live, verbose = verbose) @@ -121,7 +121,7 @@ def gapped_complex_test_src(pipeline, buffer_length = 1.0, rate = 2048, width = # # ============================================================================= # -# Pipeline Builder +# Pipeline Builder # # ============================================================================= # @@ -145,7 +145,7 @@ def build_and_run(pipelinefunc, name, segment = None, **pipelinefunc_kwargs): # # ============================================================================= # -# Push Arrays Through an Element +# Push Arrays Through an Element # # ============================================================================= # -- GitLab