gstfftf64

gstfftf64 — FFT functions for 64 bit float samples

Functions

Types and Values

Includes

#include <gst/fft/gstfftf64.h>

Description

GstFFTF64 provides a FFT implementation and related functions for 64 bit float samples. To use this call gst_fft_f64_new() for allocating a GstFFTF64 instance with the appropriate parameters and then call gst_fft_f64_fft() or gst_fft_f64_inverse_fft() to perform the FFT or inverse FFT on a buffer of samples.

After use free the GstFFTF64 instance with gst_fft_f64_free().

For the best performance use gst_fft_next_fast_length() to get a number that is entirely a product of 2, 3 and 5 and use this as the len parameter for gst_fft_f64_new().

The len parameter specifies the number of samples in the time domain that will be processed or generated. The number of samples in the frequency domain is len /2 + 1. To get n samples in the frequency domain use 2*n - 2 as len .

Before performing the FFT on time domain data it usually makes sense to apply a window function to it. For this gst_fft_f64_window() can comfortably be used.

Be aware, that you can't simply run gst_fft_f32_inverse_fft() on the resulting frequency data of gst_fft_f32_fft() to get the original data back. The relation between them is iFFT (FFT (x)) = x * nfft where nfft is the length of the FFT. This also has to be taken into account when calculation the magnitude of the frequency data.

Functions

gst_fft_f64_new ()

GstFFTF64 *
gst_fft_f64_new (gint len,
                 gboolean inverse);

This returns a new GstFFTF64 instance with the given parameters. It makes sense to keep one instance for several calls for speed reasons.

len must be even and to get the best performance a product of 2, 3 and 5. To get the next number with this characteristics use gst_fft_next_fast_length().

[skip]

Parameters

len

Length of the FFT in the time domain

 

inverse

TRUE if the GstFFTF64 instance should be used for the inverse FFT

 

Returns

a new GstFFTF64 instance.


gst_fft_f64_fft ()

void
gst_fft_f64_fft (GstFFTF64 *self,
                 const gdouble *timedata,
                 GstFFTF64Complex *freqdata);

This performs the FFT on timedata and puts the result in freqdata .

timedata must have as many samples as specified with the len parameter while allocating the GstFFTF64 instance with gst_fft_f64_new().

freqdata must be large enough to hold len /2 + 1 GstFFTF64Complex frequency domain samples.

Parameters

self

GstFFTF64 instance for this call

 

timedata

Buffer of the samples in the time domain

 

freqdata

Target buffer for the samples in the frequency domain

 

gst_fft_f64_inverse_fft ()

void
gst_fft_f64_inverse_fft (GstFFTF64 *self,
                         const GstFFTF64Complex *freqdata,
                         gdouble *timedata);

This performs the inverse FFT on freqdata and puts the result in timedata .

freqdata must have len /2 + 1 samples, where len is the parameter specified while allocating the GstFFTF64 instance with gst_fft_f64_new().

timedata must be large enough to hold len time domain samples.

Parameters

self

GstFFTF64 instance for this call

 

freqdata

Buffer of the samples in the frequency domain

 

timedata

Target buffer for the samples in the time domain

 

gst_fft_f64_window ()

void
gst_fft_f64_window (GstFFTF64 *self,
                    gdouble *timedata,
                    GstFFTWindow window);

This calls the window function window on the timedata sample buffer.

Parameters

self

GstFFTF64 instance for this call

 

timedata

Time domain samples

 

window

Window function to apply

 

gst_fft_f64_free ()

void
gst_fft_f64_free (GstFFTF64 *self);

This frees the memory allocated for self .

Parameters

self

GstFFTF64 instance for this call

 

Types and Values

GstFFTF64

typedef struct _GstFFTF64 GstFFTF64;

struct GstFFTF64Complex

struct GstFFTF64Complex {
  gdouble r;
  gdouble i;
};

Data type for complex numbers composed of 64 bit float.

Members

gdouble r;

Real part

 

gdouble i;

Imaginary part