FFmpeg
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
tx_priv.h File Reference
#include "tx.h"
#include "thread.h"
#include "mem_internal.h"
#include "common.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 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_FACTORS   16
 
#define TX_MAX_SUB   4
 
#define TX_MAX_DECOMPOSITIONS   512
 
#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 */
 
#define TX_EMBED_INPUT_PFA_MAP(map, tot_len, d1, d2)
 

Typedefs

typedef void TXComplex
 

Enumerations

enum  FFTXCodeletPriority { FF_TX_PRIO_BASE = 0, FF_TX_PRIO_MIN = -131072, FF_TX_PRIO_MAX = 32768 }
 
enum  FFTXMapDirection { FF_TX_MAP_NONE = 0, FF_TX_MAP_GATHER, FF_TX_MAP_SCATTER }
 

Functions

int ff_tx_gen_pfa_input_map (AVTXContext *s, FFTXCodeletOptions *opts, int d1, int d2)
 
int ff_tx_init_subtx (AVTXContext *s, enum AVTXType type, uint64_t flags, FFTXCodeletOptions *opts, int len, int inv, const void *scale)
 
void ff_tx_clear_ctx (AVTXContext *s)
 
int ff_tx_decompose_length (int dst[TX_MAX_DECOMPOSITIONS], enum AVTXType type, int len, int inv)
 
int ff_tx_gen_default_map (AVTXContext *s, FFTXCodeletOptions *opts)
 
int ff_tx_gen_compound_mapping (AVTXContext *s, FFTXCodeletOptions *opts, int inv, int n, int m)
 
int ff_tx_gen_ptwo_revtab (AVTXContext *s, FFTXCodeletOptions *opts)
 
int ff_tx_gen_inplace_map (AVTXContext *s, int len)
 
int ff_tx_gen_split_radix_parity_revtab (AVTXContext *s, int len, int inv, FFTXCodeletOptions *opts, 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 68 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) }, \
.nb_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 71 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 150 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 154 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 155 of file tx_priv.h.

◆ FF_TX_PRESHUFFLE

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

Definition at line 156 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 157 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 158 of file tx_priv.h.

◆ FF_TX_ASM_CALL

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

Definition at line 159 of file tx_priv.h.

◆ TX_MAX_FACTORS

#define TX_MAX_FACTORS   16

Definition at line 191 of file tx_priv.h.

◆ TX_MAX_SUB

#define TX_MAX_SUB   4

Definition at line 194 of file tx_priv.h.

◆ TX_MAX_DECOMPOSITIONS

#define TX_MAX_DECOMPOSITIONS   512

Definition at line 197 of file tx_priv.h.

◆ TX_TYPE_ANY

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

Definition at line 203 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 209 of file tx_priv.h.

◆ TX_LEN_UNLIMITED

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

Definition at line 216 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 230 of file tx_priv.h.

◆ TX_EMBED_INPUT_PFA_MAP

#define TX_EMBED_INPUT_PFA_MAP (   map,
  tot_len,
  d1,
  d2 
)
Value:
do { \
int mtmp[(d1)*(d2)]; \
for (int k = 0; k < tot_len; k += (d1)*(d2)) { \
memcpy(mtmp, &map[k], (d1)*(d2)*sizeof(*mtmp)); \
for (int m = 0; m < (d2); m++) \
for (int n = 0; n < (d1); n++) \
map[k + m*(d1) + n] = mtmp[(m*(d1) + n*(d2)) % ((d1)*(d2))]; \
} \
} while (0)

Definition at line 271 of file tx_priv.h.

Typedef Documentation

◆ TXComplex

typedef void TXComplex

Definition at line 65 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 161 of file tx_priv.h.

◆ FFTXMapDirection

Enumerator
FF_TX_MAP_NONE 
FF_TX_MAP_GATHER 
FF_TX_MAP_SCATTER 

Definition at line 171 of file tx_priv.h.

Function Documentation

◆ ff_tx_gen_pfa_input_map()

int ff_tx_gen_pfa_input_map ( AVTXContext s,
FFTXCodeletOptions opts,
int  d1,
int  d2 
)

Definition at line 43 of file tx.c.

Referenced by factor_init(), and ff_tx_fft_factor_init().

◆ 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_clear_ctx()

void ff_tx_clear_ctx ( AVTXContext s)

Definition at line 289 of file tx.c.

Referenced by ff_tx_fft_pfa_init().

◆ ff_tx_decompose_length()

int ff_tx_decompose_length ( int  dst[TX_MAX_DECOMPOSITIONS],
enum AVTXType  type,
int  len,
int  inv 
)

Definition at line 411 of file tx.c.

Referenced by ff_tx_fft_pfa_init().

◆ ff_tx_gen_default_map()

int ff_tx_gen_default_map ( AVTXContext s,
FFTXCodeletOptions opts 
)

Definition at line 524 of file tx.c.

Referenced by factor_init(), and ff_tx_fft_factor_init().

◆ ff_tx_gen_compound_mapping()

int ff_tx_gen_compound_mapping ( AVTXContext s,
FFTXCodeletOptions opts,
int  inv,
int  n,
int  m 
)

Definition at line 74 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,
FFTXCodeletOptions opts 
)

Definition at line 135 of file tx.c.

Referenced by ff_tx_fft_sr_codelet_init(), and neon_init().

◆ ff_tx_gen_inplace_map()

int ff_tx_gen_inplace_map ( AVTXContext s,
int  len 
)

Definition at line 155 of file tx.c.

Referenced by ff_tx_fft_init().

◆ ff_tx_gen_split_radix_parity_revtab()

int ff_tx_gen_split_radix_parity_revtab ( AVTXContext s,
int  len,
int  inv,
FFTXCodeletOptions opts,
int  basis,
int  dual_stride 
)

Definition at line 240 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[]

◆ ff_tx_codelet_list_float_x86

const FFTXCodelet* const ff_tx_codelet_list_float_x86[]

Definition at line 230 of file tx_float_init.c.

◆ ff_tx_codelet_list_float_aarch64

const FFTXCodelet* const ff_tx_codelet_list_float_aarch64[]

Definition at line 47 of file tx_float_init.c.

◆ ff_tx_codelet_list_double_c

const FFTXCodelet* const ff_tx_codelet_list_double_c[]

◆ ff_tx_codelet_list_int32_c

const FFTXCodelet* const ff_tx_codelet_list_int32_c[]
FF_TX_ALIGNED
#define FF_TX_ALIGNED
Definition: tx_priv.h:155
FF_TX_OUT_OF_PLACE
#define FF_TX_OUT_OF_PLACE
Definition: tx_priv.h:154
fn
#define fn(a)
Definition: aap_template.c:37
suffix
const char * suffix
Definition: checkasm.c:252
FFTXCodelet
Definition: tx_priv.h:199
map
const VDPAUPixFmtMap * map
Definition: hwcontext_vdpau.c:71
TX_TYPE
#define TX_TYPE
Definition: aacdec.c:36