libavcodec/fft.h File Reference

#include <stdint.h>
#include "config.h"
#include "libavutil/mem.h"
#include "avfft.h"

Go to the source code of this file.

Data Structures

struct  FFTContext
struct  RDFTContext
struct  DCTContext

Defines

#define FF_MDCT_PERM_NONE   0
#define FF_MDCT_PERM_INTERLEAVE   1
#define COSTABLE_CONST
#define SINTABLE_CONST
#define SINETABLE_CONST
#define COSTABLE(size)   COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2]
#define SINTABLE(size)   SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2]
#define SINETABLE(size)   SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size]

Functions

 COSTABLE (16)
 COSTABLE (32)
 COSTABLE (64)
 COSTABLE (128)
 COSTABLE (256)
 COSTABLE (512)
 COSTABLE (1024)
 COSTABLE (2048)
 COSTABLE (4096)
 COSTABLE (8192)
 COSTABLE (16384)
 COSTABLE (32768)
 COSTABLE (65536)
void ff_init_ff_cos_tabs (int index)
 Initializes the cosine table in ff_cos_tabs[index].
 SINTABLE (16)
 SINTABLE (32)
 SINTABLE (64)
 SINTABLE (128)
 SINTABLE (256)
 SINTABLE (512)
 SINTABLE (1024)
 SINTABLE (2048)
 SINTABLE (4096)
 SINTABLE (8192)
 SINTABLE (16384)
 SINTABLE (32768)
 SINTABLE (65536)
int ff_fft_init (FFTContext *s, int nbits, int inverse)
 Sets up a complex FFT.
void ff_fft_permute_c (FFTContext *s, FFTComplex *z)
void ff_fft_calc_c (FFTContext *s, FFTComplex *z)
void ff_fft_init_altivec (FFTContext *s)
void ff_fft_init_mmx (FFTContext *s)
void ff_fft_init_arm (FFTContext *s)
static void ff_fft_permute (FFTContext *s, FFTComplex *z)
 Do the permutation needed BEFORE calling ff_fft_calc().
static void ff_fft_calc (FFTContext *s, FFTComplex *z)
 Do a complex FFT with the parameters defined in ff_fft_init().
void ff_fft_end (FFTContext *s)
static void ff_imdct_calc (FFTContext *s, FFTSample *output, const FFTSample *input)
static void ff_imdct_half (FFTContext *s, FFTSample *output, const FFTSample *input)
static void ff_mdct_calc (FFTContext *s, FFTSample *output, const FFTSample *input)
void ff_kbd_window_init (float *window, float alpha, int n)
 Generate a Kaiser-Bessel Derived Window.
void ff_sine_window_init (float *window, int n)
 Generate a sine window.
void ff_init_ff_sine_windows (int index)
 initialize the specified entry of ff_sine_windows
 SINETABLE (32)
 SINETABLE (64)
 SINETABLE (128)
 SINETABLE (256)
 SINETABLE (512)
 SINETABLE (1024)
 SINETABLE (2048)
 SINETABLE (4096)
int ff_mdct_init (FFTContext *s, int nbits, int inverse, double scale)
 init MDCT or IMDCT computation.
void ff_imdct_calc_c (FFTContext *s, FFTSample *output, const FFTSample *input)
 Compute inverse MDCT of size N = 2^nbits.
void ff_imdct_half_c (FFTContext *s, FFTSample *output, const FFTSample *input)
 Compute the middle half of the inverse MDCT of size N = 2^nbits, thus excluding the parts that can be derived by symmetry.
void ff_mdct_calc_c (FFTContext *s, FFTSample *output, const FFTSample *input)
 Compute MDCT of size N = 2^nbits.
void ff_mdct_end (FFTContext *s)
int ff_rdft_init (RDFTContext *s, int nbits, enum RDFTransformType trans)
 Sets up a real FFT.
void ff_rdft_end (RDFTContext *s)
void ff_rdft_init_arm (RDFTContext *s)
static av_always_inline void ff_rdft_calc (RDFTContext *s, FFTSample *data)
int ff_dct_init (DCTContext *s, int nbits, enum DCTTransformType type)
 Sets up DCT.
void ff_dct_calc (DCTContext *s, FFTSample *data)
void ff_dct_end (DCTContext *s)

Variables

COSTABLE_CONST FFTSample *const ff_cos_tabs [17]
SINETABLE_CONST float *const ff_sine_windows [13]


Define Documentation

#define COSTABLE ( size   )     COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2]

Definition at line 65 of file fft.h.

#define COSTABLE_CONST

Definition at line 60 of file fft.h.

#define FF_MDCT_PERM_INTERLEAVE   1

Definition at line 52 of file fft.h.

Referenced by ff_fft_init_arm(), and ff_mdct_init().

#define FF_MDCT_PERM_NONE   0

Definition at line 51 of file fft.h.

Referenced by ff_mdct_init().

#define SINETABLE ( size   )     SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size]

Definition at line 69 of file fft.h.

#define SINETABLE_CONST

Definition at line 62 of file fft.h.

#define SINTABLE ( size   )     SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2]

Definition at line 67 of file fft.h.

#define SINTABLE_CONST

Definition at line 61 of file fft.h.


Function Documentation

COSTABLE ( 65536   ) 

COSTABLE ( 32768   ) 

COSTABLE ( 16384   ) 

COSTABLE ( 8192   ) 

COSTABLE ( 4096   ) 

COSTABLE ( 2048   ) 

COSTABLE ( 1024   ) 

COSTABLE ( 512   ) 

COSTABLE ( 256   ) 

COSTABLE ( 128   ) 

COSTABLE ( 64   ) 

COSTABLE ( 32   ) 

COSTABLE ( 16   ) 

void ff_dct_calc ( DCTContext s,
FFTSample data 
)

Definition at line 170 of file dct.c.

Referenced by calc_input_response(), decode_block(), and main().

void ff_dct_end ( DCTContext s  ) 

Definition at line 206 of file dct.c.

Referenced by decode_end(), main(), and wmavoice_decode_end().

int ff_dct_init ( DCTContext s,
int  nbits,
enum DCTTransformType  type 
)

Sets up DCT.

Parameters:
nbits size of the input array: (1 << nbits) for DCT-II, DCT-III and DST-I (1 << nbits) + 1 for DCT-I
Note:
the first element of the input of DST-I is ignored

Definition at line 175 of file dct.c.

Referenced by decode_init(), main(), and wmavoice_decode_init().

static void ff_fft_calc ( FFTContext s,
FFTComplex z 
) [inline, static]

Do a complex FFT with the parameters defined in ff_fft_init().

The input data must be permuted before. No 1.0/sqrt(n) normalization is done.

Definition at line 130 of file fft.h.

Referenced by ff_imdct_half_c(), ff_mdct_calc_c(), ff_rdft_calc_c(), imc_imdct256(), and main().

void ff_fft_calc_c ( FFTContext s,
FFTComplex z 
)

Definition at line 364 of file fft.c.

Referenced by ff_fft_init().

void ff_fft_end ( FFTContext s  ) 

Definition at line 203 of file fft.c.

Referenced by av_fft_end(), ff_mdct_end(), ff_rdft_end(), imc_decode_close(), and main().

int ff_fft_init ( FFTContext s,
int  nbits,
int  inverse 
)

Sets up a complex FFT.

Parameters:
nbits log2 of the length of the input array
inverse if 0 perform the forward transform, if 1 perform the inverse

Definition at line 81 of file fft.c.

Referenced by av_fft_init(), ff_mdct_init(), ff_rdft_init(), imc_decode_init(), and main().

void ff_fft_init_altivec ( FFTContext s  ) 

Definition at line 139 of file fft_altivec.c.

Referenced by ff_fft_init().

void ff_fft_init_arm ( FFTContext s  ) 

Definition at line 39 of file fft_init_arm.c.

Referenced by ff_fft_init().

void ff_fft_init_mmx ( FFTContext s  ) 

Definition at line 22 of file fft.c.

Referenced by ff_fft_init().

static void ff_fft_permute ( FFTContext s,
FFTComplex z 
) [inline, static]

Do the permutation needed BEFORE calling ff_fft_calc().

Definition at line 122 of file fft.h.

Referenced by ff_rdft_calc_c(), imc_imdct256(), and main().

void ff_fft_permute_c ( FFTContext s,
FFTComplex z 
)

Definition at line 178 of file fft.c.

Referenced by ff_fft_init().

static void ff_imdct_calc ( FFTContext s,
FFTSample output,
const FFTSample input 
) [inline, static]

Definition at line 138 of file fft.h.

Referenced by IMLT(), imlt_gain(), main(), nelly_decode_block(), and wma_decode_block().

void ff_imdct_calc_c ( FFTContext s,
FFTSample output,
const FFTSample input 
)

Compute inverse MDCT of size N = 2^nbits.

Parameters:
output N samples
input N/2 samples

Definition at line 166 of file mdct.c.

Referenced by ff_fft_init().

static void ff_imdct_half ( FFTContext s,
FFTSample output,
const FFTSample input 
) [inline, static]

void ff_imdct_half_c ( FFTContext s,
FFTSample output,
const FFTSample input 
)

Compute the middle half of the inverse MDCT of size N = 2^nbits, thus excluding the parts that can be derived by symmetry.

Parameters:
output N/2 samples
input N/2 samples

Definition at line 124 of file mdct.c.

Referenced by ff_fft_init(), and ff_imdct_calc_c().

void ff_init_ff_cos_tabs ( int  index  ) 

Initializes the cosine table in ff_cos_tabs[index].

Parameters:
index index in ff_cos_tabs array of the table to initialize

Definition at line 67 of file fft.c.

Referenced by ff_dct_init(), ff_fft_init(), and ff_rdft_init().

void ff_init_ff_sine_windows ( int  index  ) 

initialize the specified entry of ff_sine_windows

Definition at line 55 of file mdct_tablegen.h.

Referenced by aac_decode_init(), aac_encode_init(), atrac1_decode_init(), decode_init(), ff_wma_init(), init_mdct_win(), and main().

void ff_kbd_window_init ( float *  window,
float  alpha,
int  n 
)

Generate a Kaiser-Bessel Derived Window.

Parameters:
window pointer to half window
alpha determines window shape
n size of half window

Definition at line 35 of file mdct.c.

Referenced by aac_decode_init(), aac_encode_init(), and ac3_decode_init().

static void ff_mdct_calc ( FFTContext s,
FFTSample output,
const FFTSample input 
) [inline, static]

Definition at line 147 of file fft.h.

Referenced by apply_mdct(), apply_window_and_mdct(), and main().

void ff_mdct_calc_c ( FFTContext s,
FFTSample out,
const FFTSample input 
)

Compute MDCT of size N = 2^nbits.

Parameters:
input N samples
out N/2 samples

Definition at line 186 of file mdct.c.

Referenced by ff_fft_init().

void ff_mdct_end ( FFTContext s  ) 

int ff_mdct_init ( FFTContext s,
int  nbits,
int  inverse,
double  scale 
)

static av_always_inline void ff_rdft_calc ( RDFTContext s,
FFTSample data 
) [static]

void ff_rdft_end ( RDFTContext s  ) 

Definition at line 130 of file rdft.c.

Referenced by decode_end(), ff_dct_end(), main(), qdm2_decode_close(), and wmavoice_decode_end().

int ff_rdft_init ( RDFTContext s,
int  nbits,
enum RDFTransformType  trans 
)

Sets up a real FFT.

Parameters:
nbits log2 of the length of the input array
trans the type of transform

Definition at line 99 of file rdft.c.

Referenced by decode_init(), ff_dct_init(), main(), qdm2_decode_init(), and wmavoice_decode_init().

void ff_rdft_init_arm ( RDFTContext s  ) 

Referenced by ff_rdft_init().

void ff_sine_window_init ( float *  window,
int  n 
)

Generate a sine window.

Parameters:
window pointer to half window
n size of half window

Definition at line 49 of file mdct_tablegen.h.

Referenced by encode_init(), ff_init_ff_sine_windows(), imc_decode_init(), init_cook_mlt(), and wmavoice_decode_init().

SINETABLE ( 4096   ) 

SINETABLE ( 2048   ) 

SINETABLE ( 1024   ) 

SINETABLE ( 512   ) 

SINETABLE ( 256   ) 

SINETABLE ( 128   ) 

SINETABLE ( 64   ) 

SINETABLE ( 32   ) 

SINTABLE ( 65536   ) 

SINTABLE ( 32768   ) 

SINTABLE ( 16384   ) 

SINTABLE ( 8192   ) 

SINTABLE ( 4096   ) 

SINTABLE ( 2048   ) 

SINTABLE ( 1024   ) 

SINTABLE ( 512   ) 

SINTABLE ( 256   ) 

SINTABLE ( 128   ) 

SINTABLE ( 64   ) 

SINTABLE ( 32   ) 

SINTABLE ( 16   ) 


Variable Documentation

COSTABLE_CONST FFTSample* const ff_cos_tabs[17]

Definition at line 50 of file fft.c.

Referenced by ff_dct_init(), ff_init_ff_cos_tabs(), and ff_rdft_init().

SINETABLE_CONST float* const ff_sine_windows[13]


Generated on Fri Oct 26 02:36:51 2012 for FFmpeg by  doxygen 1.5.8