FFT/IFFT transforms.
More...
#include <stdlib.h>
#include <string.h>
#include "libavutil/mathematics.h"
#include "fft.h"
#include "fft-internal.h"
Go to the source code of this file.
|
#define | BUTTERFLIES(a0, a1, a2, a3) |
|
#define | BUTTERFLIES_BIG(a0, a1, a2, a3) |
|
#define | TRANSFORM(a0, a1, a2, a3, wre, wim) |
|
#define | TRANSFORM_ZERO(a0, a1, a2, a3) |
|
#define | PASS(name) |
|
#define | BUTTERFLIES BUTTERFLIES_BIG |
|
#define | DECL_FFT(n, n2, n4) |
|
#define | pass pass_big |
|
FFT/IFFT transforms.
Definition in file fft_template.c.
#define BUTTERFLIES |
( |
|
a0, |
|
|
|
a1, |
|
|
|
a2, |
|
|
|
a3 |
|
) |
| |
Value:
BF(a2.re, a0.re, a0.re, t5);
\
BF(a3.im, a1.im, a1.im, t3);
\
BF(a3.re, a1.re, a1.re, t4);
\
BF(a2.im, a0.im, a0.im, t6);\
}
Definition at line 269 of file fft_template.c.
Referenced by fft8().
#define BUTTERFLIES_BIG |
( |
|
a0, |
|
|
|
a1, |
|
|
|
a2, |
|
|
|
a3 |
|
) |
| |
Value:
FFTSample r0=a0.re, i0=a0.im, r1=a1.re, i1=a1.im;
\
BF(a2.re, a0.re, r0, t5);
\
BF(a3.im, a1.im, i1, t3);
\
BF(a3.re, a1.re, r1, t4);
\
BF(a2.im, a0.im, i0, t6);\
}
Definition at line 221 of file fft_template.c.
#define TRANSFORM |
( |
|
a0, |
|
|
|
a1, |
|
|
|
a2, |
|
|
|
a3, |
|
|
|
wre, |
|
|
|
wim |
|
) |
| |
Value:
CMUL(t1, t2, a2.re, a2.im, wre, -wim);
\
CMUL(t5, t6, a3.re, a3.im, wre, wim);
\
}
#define BUTTERFLIES(a0, a1, a2, a3)
#define CMUL(dre, dim, are, aim, bre, bim)
Definition at line 231 of file fft_template.c.
Referenced by fft16(), and fft8().
#define TRANSFORM_ZERO |
( |
|
a0, |
|
|
|
a1, |
|
|
|
a2, |
|
|
|
a3 |
|
) |
| |
Value:{\
t1 = a2.re;\
t2 = a2.im;\
t5 = a3.re;\
}
#define BUTTERFLIES(a0, a1, a2, a3)
Definition at line 237 of file fft_template.c.
Referenced by fft16().
Value:
int o1 = 2*n;\
int o2 = 4*n;\
int o3 = 6*n;\
TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\
do {\
z += 2;\
wre += 2;\
TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\
} while(--n);\
}
#define TRANSFORM(a0, a1, a2, a3, wre, wim)
#define TRANSFORM_ZERO(a0, a1, a2, a3)
Definition at line 246 of file fft_template.c.
#define DECL_FFT |
( |
|
n, |
|
|
|
n2, |
|
|
|
n4 |
|
) |
| |
Value:
{\
fft##n2(z);\
fft##n4(z+n4*2);\
}
COSTABLE_CONST FFTSample *const FFT_NAME(ff_cos_tabs)[]
Definition at line 272 of file fft_template.c.
Definition at line 335 of file fft_template.c.
Referenced by encode_frame(), ff_lpc_calc_coefs(), ff_png_pass_row_size(), gif_read_image(), guess_mv(), h264_handle_packet(), new_video_stream(), png_get_interlaced_row(), png_put_interlaced_row(), residue_encode(), silk_stabilize_lsf(), and vorbis_residue_decode_internal().
static int split_radix_permutation |
( |
int |
i, |
|
|
int |
n, |
|
|
int |
inverse |
|
) |
| |
|
static |
Initialize the cosine table in ff_cos_tabs[index].
- Parameters
-
index | index in ff_cos_tabs array of the table to initialize |
Definition at line 82 of file fft_template.c.
Referenced by ff_fft_init().
static int is_second_half_of_fft32 |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
static |
Set 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 134 of file fft_template.c.
Initial value:= {
0, 4, 1, 5, 8, 12, 9, 13, 2, 6, 3, 7, 10, 14, 11, 15
}
Definition at line 96 of file fft_template.c.
Referenced by fft_perm_avx().
Initial value:= {
fft4,
fft8,
fft16, fft32, fft64, fft128, fft256, fft512, fft1024,
fft2048, fft4096, fft8192, fft16384, fft32768, fft65536,
}
static void fft4(FFTComplex *z)
static void fft8(FFTComplex *z)
static void fft16(FFTComplex *z)
Definition at line 345 of file fft_template.c.
Referenced by fft_calc_c().