GSTLALFIRBank

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

Synopsis

struct              GSTLALFIRBank;
struct              GSTLALFIRBankClass;
#define             GSTLAL_FIRBANK_TYPE

Object Hierarchy

  GObject
   +----GstObject
         +----GstElement
               +----GstBaseTransform
                     +----GSTLALFIRBank

Properties

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

Signals

  "rate-changed"                                   : Run First

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.

Details

struct GSTLALFIRBank

struct GSTLALFIRBank;

struct GSTLALFIRBankClass

struct GSTLALFIRBankClass {
	GstBaseTransformClass parent_class;

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

GstBaseTransformClass parent_class;

the parent class

rate_changed ()


GSTLAL_FIRBANK_TYPE

#define             GSTLAL_FIRBANK_TYPE

Property Details

The "block-stride" property

  "block-stride"             gint                  : Read / Write / Construct

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.

Allowed values: >= 1

Default value: 1


The "fir-matrix" property

  "fir-matrix"               GValueArray*          : Read / Write

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


The "latency" property

  "latency"                  gint64                : Read / Write / Construct

Filter latency in samples.

Default value: 0


The "time-domain" property

  "time-domain"              gboolean              : Read / Write / Construct

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.

Default value: FALSE

Signal Details

The "rate-changed" signal

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

gstlalfirbank :

the object which received the signal.

user_data :

user data set when the signal handler was connected.