GSTLALFIRBank

GSTLALFIRBank — Projects a single audio channel onto a bank of FIR filters to produce a multi-channel output.

Properties

gint block-stride Read / Write / Construct
GValueArray * fir-matrix Read / Write
gint64 latency Read / Write / Construct
gboolean time-domain Read / Write / Construct

Signals

void rate-changed Run First

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GstObject
            ╰── GstElement
                ╰── GstBaseTransform
                    ╰── GSTLALFIRBank

Description

If the input stream is given by x[i] (i = 0, ...), one of the (N+1)-sample filter kernels is given by a[j] (j = 0, ..., N), then the output stream corresponding to that filter kernel is given by y[k] (k = 0, ...) where

y[i] = \sum_{j = 0}^{N} x[i + j] a[j].

Note in particular that the kernel is defined in reverse with respect to the traditional definition. This is for historical reasons. Also note that the first output sample generated by the element is the first sample that can be computed entirely from input data (i.e., without assuming the input data was preceded by 0s). Most (all?) GStreamer elements, in particular the audiofirfilter element, assume the input data is padded before and after by an arbitrary number of 0s and compute the output stream accordingly.

If x[0] carries timestamp t0 then y[0] will be assigned timestamp t0 + (N - latency) \Delta t, where latency is the element's configured latency in samples and \Delta t is the sample period. This is equivalent to the latency definition used by the audiofirfilter element.

Reviewed: 3a08854e595cf35a002483eae9a2b001b1100d21 2014-08-14 K. Cannon, J. Creighton, B. Sathyaprakash.

Actions:

  • impulse tests of filtering code?

  • pick a PSD, generate template bank, inject an exact template whitened with that PSD, confirm that SNR stream is the autocorrelation recorded in the svd bank file with the correct SNR for the injection

Functions

Types and Values

GSTLAL_FIRBANK_TYPE

#define             GSTLAL_FIRBANK_TYPE

struct GSTLALFIRBank

struct GSTLALFIRBank;

struct GSTLALFIRBankClass

struct GSTLALFIRBankClass {
	GstBaseTransformClass parent_class;

	void (*rate_changed)(GSTLALFIRBank *, gint, void *);
};

Members

GstBaseTransformClass parent_class;

the parent class

 

rate_changed ()

   

Property Details

The “block-stride” property

  “block-stride”             gint

When using FFT convolutions, this many samples will be produced from each block. Smaller values decrease latency but increase computational cost. If very small values are desired, consider using time-domain convolution mode instead.

Flags: Read / Write / Construct

Allowed values: >= 1

Default value: 1


The “fir-matrix” property

  “fir-matrix”               GValueArray *

Array of impulse response vectors. Number of vectors (rows) in matrix sets number of output channels. All filters must have the same length.

Flags: Read / Write


The “latency” property

  “latency”                  gint64

Filter latency in samples.

Flags: Read / Write / Construct

Default value: 0


The “time-domain” property

  “time-domain”              gboolean

Set to true to use time-domain (a.k.a. direct) convolution, set to false to use FFT-based convolution. For long filters FFT-based convolution is usually significantly faster than time-domain convolution but incurs a higher processing latency and requires more RAM.

Flags: Read / Write / Construct

Default value: FALSE

Signal Details

The “rate-changed” signal

void
user_function (GSTLALFIRBank *gstlalfirbank,
               gint           arg1,
               gpointer       user_data)

Flags: Run First