#include "avassert.h"
#include "intmath.h"
#include "cpu.h"
#include "mem.h"
#include "qsort.h"
#include "bprint.h"
#include "tx_priv.h"
#define TYPE_IS(type, x) …
static av_always_inline int mulinv(int n, int m)
{ … }
int ff_tx_gen_pfa_input_map(AVTXContext *s, FFTXCodeletOptions *opts,
int d1, int d2)
{ … }
int ff_tx_gen_compound_mapping(AVTXContext *s, FFTXCodeletOptions *opts,
int inv, int n, int m)
{ … }
static inline int split_radix_permutation(int i, int len, int inv)
{ … }
int ff_tx_gen_ptwo_revtab(AVTXContext *s, FFTXCodeletOptions *opts)
{ … }
int ff_tx_gen_inplace_map(AVTXContext *s, int len)
{ … }
static void parity_revtab_generator(int *revtab, int n, int inv, int offset,
int is_dual, int dual_high, int len,
int basis, int dual_stride, int inv_lookup)
{ … }
int ff_tx_gen_split_radix_parity_revtab(AVTXContext *s, int len, int inv,
FFTXCodeletOptions *opts,
int basis, int dual_stride)
{ … }
static void reset_ctx(AVTXContext *s, int free_sub)
{ … }
void ff_tx_clear_ctx(AVTXContext *s)
{ … }
av_cold void av_tx_uninit(AVTXContext **ctx)
{ … }
static av_cold int ff_tx_null_init(AVTXContext *s, const FFTXCodelet *cd,
uint64_t flags, FFTXCodeletOptions *opts,
int len, int inv, const void *scale)
{ … }
static void ff_tx_null(AVTXContext *s, void *_out, void *_in, ptrdiff_t stride)
{ … }
static const FFTXCodelet ff_tx_null_def = …;
static const FFTXCodelet * const ff_tx_null_list[] = …;
static const FFTXCodelet * const * const codelet_list[] = …;
static const int codelet_list_num = …;
static const int cpu_slow_mask = …;
static const int cpu_slow_penalties[][2] = …;
static int get_codelet_prio(const FFTXCodelet *cd, int cpu_flags, int len)
{ … }
FFTXLenDecomp;
static int cmp_decomp(FFTXLenDecomp *a, FFTXLenDecomp *b)
{ … }
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)
{ … }
#if !CONFIG_SMALL
static void print_flags(AVBPrint *bp, uint64_t f)
{ … }
static void print_type(AVBPrint *bp, enum AVTXType type)
{ … }
static void print_cd_info(const FFTXCodelet *cd, int prio, int len, int print_prio,
int log_level)
{ … }
static void print_tx_structure(AVTXContext *s, int depth)
{ … }
#endif
TXCodeletMatch;
static int cmp_matches(TXCodeletMatch *a, TXCodeletMatch *b)
{ … }
static inline int check_cd_factors(const FFTXCodelet *cd, int len)
{ … }
av_cold int ff_tx_init_subtx(AVTXContext *s, enum AVTXType type,
uint64_t flags, FFTXCodeletOptions *opts,
int len, int inv, const void *scale)
{ … }
av_cold int av_tx_init(AVTXContext **ctx, av_tx_fn *tx, enum AVTXType type,
int inv, int len, const void *scale, uint64_t flags)
{ … }