## GstFFTF64 GstFFTF64 — FFT functions for 64 bit float samples |

## Functions

GstFFTF64 * | gst_fft_f64_new ()
void | gst_fft_f64_fft ()
void | gst_fft_f64_inverse_fft ()
void | gst_fft_f64_window ()
void | gst_fft_f64_free ()

## Types and Values

| GstFFTF64
struct | GstFFTF64Complex

## Includes

    #include <gst/fft/fft.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 |