FFmpeg
Loading...
Searching...
No Matches
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)
 
#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)
 
#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 )
Value:
void TX_FN_NAME(fn, suffix)(AVTXContext *s, void *o, void *i, ptrdiff_t st);
#define fn(a)
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define s(width, name)
Definition cbs_vp9.c:198

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, \
}
#define TX_TYPE
#define FF_TX_OUT_OF_PLACE
Definition tx_priv.h:154
#define FF_TX_ALIGNED
Definition tx_priv.h:155

Definition at line 71 of file tx_priv.h.

◆ CMUL3

#define CMUL3 ( c,
a,
b )
Value:
CMUL((c).re, (c).im, (a).re, (a).im, (b).re, (b).im)
int a
#define b
Definition input.c:43
static double c[64]

Definition at line 150 of file tx_priv.h.

Referenced by ff_tx_fft_naive(), ff_tx_fft_naive_small(), and ff_tx_mdct_inv().

◆ FF_TX_OUT_OF_PLACE

◆ 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.

Referenced by av_tx_init(), ff_tx_init_subtx(), get_codelet_prio(), and print_flags().

◆ FF_TX_PRESHUFFLE

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

◆ FF_TX_INVERSE_ONLY

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

◆ FF_TX_FORWARD_ONLY

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

◆ 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.

Referenced by ff_tx_init_subtx(), fft_pfa_init(), m_inv_init(), and print_flags().

◆ TX_MAX_FACTORS

#define TX_MAX_FACTORS   16

Definition at line 191 of file tx_priv.h.

Referenced by check_cd_factors(), ff_tx_decompose_length(), and print_cd_info().

◆ TX_MAX_SUB

#define TX_MAX_SUB   4

Definition at line 194 of file tx_priv.h.

Referenced by ff_tx_init_subtx(), get_codelet_prio(), and reset_ctx().

◆ TX_MAX_DECOMPOSITIONS

#define TX_MAX_DECOMPOSITIONS   512

Definition at line 197 of file tx_priv.h.

Referenced by ff_tx_decompose_length(), and ff_tx_fft_pfa_init().

◆ TX_TYPE_ANY

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

Definition at line 203 of file tx_priv.h.

Referenced by ff_tx_decompose_length(), ff_tx_init_subtx(), and print_type().

◆ 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.

Referenced by check_cd_factors(), ff_tx_decompose_length(), print_cd_info(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), TX_NAME(), and TX_NAME().

◆ TX_LEN_UNLIMITED

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

◆ FF_TX_CPU_FLAGS_ALL

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

◆ 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)
const VDPAUPixFmtMap * map

Definition at line 271 of file tx_priv.h.

Referenced by ff_tx_mdct_pfa_init(), and fft_pfa_init().

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 44 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 290 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 412 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 525 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 75 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 136 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 156 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 241 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[]
extern

◆ ff_tx_codelet_list_float_x86

const FFTXCodelet* const ff_tx_codelet_list_float_x86[]
extern

Definition at line 231 of file tx_float_init.c.

Referenced by ff_tx_mdct_gen_exp_int32().

◆ ff_tx_codelet_list_float_aarch64

const FFTXCodelet* const ff_tx_codelet_list_float_aarch64[]
extern

Definition at line 47 of file tx_float_init.c.

Referenced by ff_tx_mdct_gen_exp_int32().

◆ ff_tx_codelet_list_double_c

const FFTXCodelet* const ff_tx_codelet_list_double_c[]
extern

◆ ff_tx_codelet_list_int32_c

const FFTXCodelet* const ff_tx_codelet_list_int32_c[]
extern