| Top |  |  |  |  | 
| GstFFTS16 * | gst_fft_s16_new () | 
| void | gst_fft_s16_fft () | 
| void | gst_fft_s16_inverse_fft () | 
| void | gst_fft_s16_window () | 
| void | gst_fft_s16_free () | 
GstFFTS16 provides a FFT implementation and related functions for
signed 16 bit integer samples. To use this call gst_fft_s16_new() for
allocating a GstFFTS16 instance with the appropriate parameters and
then call gst_fft_s16_fft() or gst_fft_s16_inverse_fft() to perform the
FFT or inverse FFT on a buffer of samples.
After use free the GstFFTS16 instance with gst_fft_s16_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_s16_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_s16_window() can comfortably
be used.
Be aware, that you can't simply run gst_fft_s16_inverse_fft() on the
resulting frequency data of gst_fft_s16_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.
GstFFTS16 * gst_fft_s16_new (gint len,gboolean inverse);
This returns a new GstFFTS16 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]
void gst_fft_s16_fft (GstFFTS16 *self,const gint16 *timedata,GstFFTS16Complex *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 GstFFTS16 instance with gst_fft_s16_new().
freqdata
 must be large enough to hold len
/2 + 1 GstFFTS16Complex frequency
domain samples.
| self | GstFFTS16 instance for this call | |
| timedata | Buffer of the samples in the time domain | |
| freqdata | Target buffer for the samples in the frequency domain | 
void gst_fft_s16_inverse_fft (GstFFTS16 *self,const GstFFTS16Complex *freqdata,gint16 *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 GstFFTS16 instance with gst_fft_s16_new().
timedata
 must be large enough to hold len
 time domain samples.
| self | GstFFTS16 instance for this call | |
| freqdata | Buffer of the samples in the frequency domain | |
| timedata | Target buffer for the samples in the time domain | 
void gst_fft_s16_window (GstFFTS16 *self,gint16 *timedata,GstFFTWindow window);
This calls the window function window
 on the timedata
 sample buffer.
| self | GstFFTS16 instance for this call | |
| timedata | Time domain samples | |
| window | Window function to apply |