FFmpeg  4.4.4
Macros | Functions | Variables
fft_template.c File Reference

FFT/IFFT transforms. More...

#include <stdlib.h>
#include <string.h>
#include "libavutil/mathematics.h"
#include "libavutil/thread.h"
#include "fft.h"
#include "fft-internal.h"
#include "fft_table.h"

Go to the source code of this file.

Macros

#define PROCESS_FFT_PERM_SWAP_LSBS(num)
 
#define PROCESS_FFT_PERM_DEFAULT(num)
 
#define SPLIT_RADIX_PERMUTATION(num)
 

Functions

static void fft_permute_c (FFTContext *s, FFTComplex *z)
 
static void fft_calc_c (FFTContext *s, FFTComplex *z)
 
static int split_radix_permutation (int i, int n, int inverse)
 
static int is_second_half_of_fft32 (int i, int n)
 
static av_cold void fft_perm_avx (FFTContext *s)
 
av_cold int ff_fft_init (FFTContext *s, int nbits, int inverse)
 Set up a complex FFT. More...
 
av_cold void ff_fft_end (FFTContext *s)
 

Variables

static const int avx_tab []
 

Detailed Description

FFT/IFFT transforms.

Definition in file fft_template.c.

Macro Definition Documentation

◆ PROCESS_FFT_PERM_SWAP_LSBS

#define PROCESS_FFT_PERM_SWAP_LSBS (   num)
Value:
do {\
for(i = 0; i < n; i++) {\
int k;\
j = i;\
j = (j & ~3) | ((j >> 1) & 1) | ((j << 1) & 2);\
k = -split_radix_permutation(i, n, s->inverse) & (n - 1);\
s->revtab##num[k] = j;\
} \
} while(0);
#define s(width, name)
Definition: cbs_vp9.c:257
static int split_radix_permutation(int i, int n, int inverse)
Definition: fft_template.c:144
int i
Definition: input.c:407

◆ PROCESS_FFT_PERM_DEFAULT

#define PROCESS_FFT_PERM_DEFAULT (   num)
Value:
do {\
for(i = 0; i < n; i++) {\
int k;\
j = i;\
k = -split_radix_permutation(i, n, s->inverse) & (n - 1);\
s->revtab##num[k] = j;\
} \
} while(0);

◆ SPLIT_RADIX_PERMUTATION

#define SPLIT_RADIX_PERMUTATION (   num)
Value:
do { \
if (s->fft_permutation == FF_FFT_PERM_SWAP_LSBS) {\
PROCESS_FFT_PERM_SWAP_LSBS(num) \
} else {\
PROCESS_FFT_PERM_DEFAULT(num) \
}\
} while(0);
@ FF_FFT_PERM_SWAP_LSBS
Definition: fft.h:74

Function Documentation

◆ fft_permute_c()

static void fft_permute_c ( FFTContext s,
FFTComplex z 
)
static

Definition at line 293 of file fft_template.c.

Referenced by ff_fft_init().

◆ fft_calc_c()

static void fft_calc_c ( FFTContext s,
FFTComplex z 
)
static

Definition at line 317 of file fft_template.c.

Referenced by ff_fft_init().

◆ split_radix_permutation()

static int split_radix_permutation ( int  i,
int  n,
int  inverse 
)
static

Definition at line 144 of file fft_template.c.

Referenced by ff_tx_gen_ptwo_revtab(), and fft_perm_avx().

◆ is_second_half_of_fft32()

static int is_second_half_of_fft32 ( int  i,
int  n 
)
static

Definition at line 160 of file fft_template.c.

Referenced by fft_perm_avx().

◆ fft_perm_avx()

static av_cold void fft_perm_avx ( FFTContext s)
static

Definition at line 172 of file fft_template.c.

Referenced by ff_fft_init().

◆ ff_fft_init()

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

Set up a complex FFT.

Parameters
nbitslog2 of the length of the input array
inverseif 0 perform the forward transform, if 1 perform the inverse

Definition at line 194 of file fft_template.c.

◆ ff_fft_end()

av_cold void ff_fft_end ( FFTContext s)

Definition at line 308 of file fft_template.c.

Variable Documentation

◆ avx_tab

const int avx_tab[]
static
Initial value:
= {
0, 4, 1, 5, 8, 12, 9, 13, 2, 6, 3, 7, 10, 14, 11, 15
}

Definition at line 156 of file fft_template.c.

Referenced by fft_perm_avx().