FFmpeg
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
tx_priv.h File Reference
#include "tx.h"
#include "thread.h"
#include "mem_internal.h"
#include "attributes.h"

Go to the source code of this file.

Data Structures

struct  FFTXCodeletOptions
 
struct  FFTXCodelet
 
struct  AVTXContext
 

Macros

#define TX_DECL_FN(fn, suffix)   void TX_FN_NAME(fn, suffix)(AVTXContext *s, void *o, void *i, ptrdiff_t st);
 
#define TX_DEF(fn, tx_type, len_min, len_max, f1, f2, p, init_fn, suffix, cf, cd_flags, cf2)
 
#define BF(x, y, a, b)
 
#define CMUL3(c, a, b)   CMUL((c).re, (c).im, (a).re, (a).im, (b).re, (b).im)
 
#define FF_TX_OUT_OF_PLACE   (1ULL << 63) /* Can be OR'd with AV_TX_INPLACE */
 
#define FF_TX_ALIGNED   (1ULL << 62) /* Cannot be OR'd with AV_TX_UNALIGNED */
 
#define FF_TX_PRESHUFFLE   (1ULL << 61) /* Codelet expects permuted coeffs */
 
#define FF_TX_INVERSE_ONLY   (1ULL << 60) /* For non-orthogonal inverse-only transforms */
 
#define FF_TX_FORWARD_ONLY   (1ULL << 59) /* For non-orthogonal forward-only transforms */
 
#define FF_TX_ASM_CALL   (1ULL << 58) /* For asm->asm functions only */
 
#define TX_MAX_SUB   4
 
#define TX_TYPE_ANY   INT32_MAX /* Special type to allow all types */
 
#define TX_FACTOR_ANY
 
#define TX_LEN_UNLIMITED   -1 /* Special length value to permit all lengths */
 
#define FF_TX_CPU_FLAGS_ALL   0x0 /* Special CPU flag for C */
 

Typedefs

typedef void TXComplex
 

Enumerations

enum  FFTXCodeletPriority { FF_TX_PRIO_BASE = 0, FF_TX_PRIO_MIN = -131072, FF_TX_PRIO_MAX = 32768 }
 

Functions

int ff_tx_init_subtx (AVTXContext *s, enum AVTXType type, uint64_t flags, FFTXCodeletOptions *opts, int len, int inv, const void *scale)
 
int ff_tx_gen_compound_mapping (AVTXContext *s, int n, int m)
 
int ff_tx_gen_ptwo_revtab (AVTXContext *s, int invert_lookup)
 
int ff_tx_gen_ptwo_inplace_revtab_idx (AVTXContext *s)
 
int ff_tx_gen_split_radix_parity_revtab (AVTXContext *s, int len, int inv, int inv_lookup, int basis, int dual_stride)
 
void ff_tx_init_tabs_float (int len)
 
void ff_tx_init_tabs_double (int len)
 
void ff_tx_init_tabs_int32 (int len)
 
int ff_tx_mdct_gen_exp_float (AVTXContext *s, int *pre_tab)
 
int ff_tx_mdct_gen_exp_double (AVTXContext *s, int *pre_tab)
 
int ff_tx_mdct_gen_exp_int32 (AVTXContext *s, int *pre_tab)
 

Variables

const FFTXCodelet *const ff_tx_codelet_list_float_c []
 
const FFTXCodelet *const ff_tx_codelet_list_float_x86 []
 
const FFTXCodelet *const ff_tx_codelet_list_float_aarch64 []
 
const FFTXCodelet *const ff_tx_codelet_list_double_c []
 
const FFTXCodelet *const ff_tx_codelet_list_int32_c []
 

Macro Definition Documentation

◆ TX_DECL_FN

#define TX_DECL_FN (   fn,
  suffix 
)    void TX_FN_NAME(fn, suffix)(AVTXContext *s, void *o, void *i, ptrdiff_t st);

Definition at line 64 of file tx_priv.h.

◆ TX_DEF

#define TX_DEF (   fn,
  tx_type,
  len_min,
  len_max,
  f1,
  f2,
  p,
  init_fn,
  suffix,
  cf,
  cd_flags,
  cf2 
)
Value:
&(const FFTXCodelet){ \
.name = TX_FN_NAME_STR(fn, suffix), \
.function = TX_FN_NAME(fn, suffix), \
.type = TX_TYPE(tx_type), \
.flags = FF_TX_ALIGNED | FF_TX_OUT_OF_PLACE | cd_flags, \
.factors = { f1, f2 }, \
.min_len = len_min, \
.max_len = len_max, \
.init = init_fn, \
.cpu_flags = cf2 | AV_CPU_FLAG_ ## cf, \
.prio = p, \
}

Definition at line 67 of file tx_priv.h.

◆ BF

#define BF (   x,
  y,
  a,
  b 
)
Value:
do { \
x = (a) - (b); \
y = (a) + (b); \
} while (0)

Definition at line 133 of file tx_priv.h.

◆ CMUL3

#define CMUL3 (   c,
  a,
  b 
)    CMUL((c).re, (c).im, (a).re, (a).im, (b).re, (b).im)

Definition at line 139 of file tx_priv.h.

◆ FF_TX_OUT_OF_PLACE

#define FF_TX_OUT_OF_PLACE   (1ULL << 63) /* Can be OR'd with AV_TX_INPLACE */

Definition at line 143 of file tx_priv.h.

◆ FF_TX_ALIGNED

#define FF_TX_ALIGNED   (1ULL << 62) /* Cannot be OR'd with AV_TX_UNALIGNED */

Definition at line 144 of file tx_priv.h.

◆ FF_TX_PRESHUFFLE

#define FF_TX_PRESHUFFLE   (1ULL << 61) /* Codelet expects permuted coeffs */

Definition at line 145 of file tx_priv.h.

◆ FF_TX_INVERSE_ONLY

#define FF_TX_INVERSE_ONLY   (1ULL << 60) /* For non-orthogonal inverse-only transforms */

Definition at line 146 of file tx_priv.h.

◆ FF_TX_FORWARD_ONLY

#define FF_TX_FORWARD_ONLY   (1ULL << 59) /* For non-orthogonal forward-only transforms */

Definition at line 147 of file tx_priv.h.

◆ FF_TX_ASM_CALL

#define FF_TX_ASM_CALL   (1ULL << 58) /* For asm->asm functions only */

Definition at line 148 of file tx_priv.h.

◆ TX_MAX_SUB

#define TX_MAX_SUB   4

Definition at line 167 of file tx_priv.h.

◆ TX_TYPE_ANY

#define TX_TYPE_ANY   INT32_MAX /* Special type to allow all types */

Definition at line 173 of file tx_priv.h.

◆ TX_FACTOR_ANY

#define TX_FACTOR_ANY
Value:
-1 /* When used alone, signals that the codelet
* supports all factors. Otherwise, if other
* factors are present, it signals that whatever
* remains will be supported, as long as the
* other factors are a component of the length */

Definition at line 179 of file tx_priv.h.

◆ TX_LEN_UNLIMITED

#define TX_LEN_UNLIMITED   -1 /* Special length value to permit all lengths */

Definition at line 183 of file tx_priv.h.

◆ FF_TX_CPU_FLAGS_ALL

#define FF_TX_CPU_FLAGS_ALL   0x0 /* Special CPU flag for C */

Definition at line 197 of file tx_priv.h.

Typedef Documentation

◆ TXComplex

typedef void TXComplex

Definition at line 61 of file tx_priv.h.

Enumeration Type Documentation

◆ FFTXCodeletPriority

Enumerator
FF_TX_PRIO_BASE 
FF_TX_PRIO_MIN 
FF_TX_PRIO_MAX 

Definition at line 150 of file tx_priv.h.

Function Documentation

◆ ff_tx_init_subtx()

int ff_tx_init_subtx ( AVTXContext s,
enum AVTXType  type,
uint64_t  flags,
FFTXCodeletOptions opts,
int  len,
int  inv,
const void *  scale 
)

◆ ff_tx_gen_compound_mapping()

int ff_tx_gen_compound_mapping ( AVTXContext s,
int  n,
int  m 
)

Definition at line 43 of file tx.c.

Referenced by ff_tx_fft_pfa_init(), ff_tx_mdct_pfa_init(), and fft_pfa_init().

◆ ff_tx_gen_ptwo_revtab()

int ff_tx_gen_ptwo_revtab ( AVTXContext s,
int  invert_lookup 
)

Definition at line 106 of file tx.c.

Referenced by ff_tx_fft_sr_codelet_init(), and neon_init().

◆ ff_tx_gen_ptwo_inplace_revtab_idx()

int ff_tx_gen_ptwo_inplace_revtab_idx ( AVTXContext s)

Definition at line 124 of file tx.c.

Referenced by ff_tx_fft_sr_init().

◆ ff_tx_gen_split_radix_parity_revtab()

int ff_tx_gen_split_radix_parity_revtab ( AVTXContext s,
int  len,
int  inv,
int  inv_lookup,
int  basis,
int  dual_stride 
)

Definition at line 209 of file tx.c.

Referenced by neon_init().

◆ ff_tx_init_tabs_float()

void ff_tx_init_tabs_float ( int  len)

Referenced by neon_init().

◆ ff_tx_init_tabs_double()

void ff_tx_init_tabs_double ( int  len)

◆ ff_tx_init_tabs_int32()

void ff_tx_init_tabs_int32 ( int  len)

◆ ff_tx_mdct_gen_exp_float()

int ff_tx_mdct_gen_exp_float ( AVTXContext s,
int pre_tab 
)

Referenced by m_inv_init().

◆ ff_tx_mdct_gen_exp_double()

int ff_tx_mdct_gen_exp_double ( AVTXContext s,
int pre_tab 
)

◆ ff_tx_mdct_gen_exp_int32()

int ff_tx_mdct_gen_exp_int32 ( AVTXContext s,
int pre_tab 
)

Variable Documentation

◆ ff_tx_codelet_list_float_c

const FFTXCodelet* const ff_tx_codelet_list_float_c[]

Referenced by ff_tx_init_subtx().

◆ ff_tx_codelet_list_float_x86

const FFTXCodelet* const ff_tx_codelet_list_float_x86[]

Definition at line 177 of file tx_float_init.c.

Referenced by ff_tx_init_subtx().

◆ ff_tx_codelet_list_float_aarch64

const FFTXCodelet* const ff_tx_codelet_list_float_aarch64[]

Definition at line 48 of file tx_float_init.c.

Referenced by ff_tx_init_subtx().

◆ ff_tx_codelet_list_double_c

const FFTXCodelet* const ff_tx_codelet_list_double_c[]

Referenced by ff_tx_init_subtx().

◆ ff_tx_codelet_list_int32_c

const FFTXCodelet* const ff_tx_codelet_list_int32_c[]

Referenced by ff_tx_init_subtx().

b
#define b
Definition: input.c:41
fn
#define fn(a)
Definition: afir_template.c:44
FF_TX_ALIGNED
#define FF_TX_ALIGNED
Definition: tx_priv.h:144
FF_TX_OUT_OF_PLACE
#define FF_TX_OUT_OF_PLACE
Definition: tx_priv.h:143
a
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
Definition: undefined.txt:41
suffix
const char * suffix
Definition: checkasm.c:217
FFTXCodelet
Definition: tx_priv.h:169