Go to the documentation of this file.
21 #ifndef AVCODEC_DCADSP_H
22 #define AVCODEC_DCADSP_H
33 const int8_t hf_vq[1024][32],
35 ptrdiff_t sb_start, ptrdiff_t sb_end,
36 ptrdiff_t ofs, ptrdiff_t
len);
40 ptrdiff_t sb_start, ptrdiff_t sb_end,
41 ptrdiff_t ofs, ptrdiff_t
len);
44 const float *filter_coeff, ptrdiff_t npcmblocks);
47 float *hist, ptrdiff_t
len);
55 float *hist1,
int *
offset,
float *hist2,
56 const float *filter_coeff, ptrdiff_t npcmblocks,
60 const int32_t *filter_coeff, ptrdiff_t npcmblocks);
71 const int32_t *filter_coeff, ptrdiff_t npcmblocks);
90 const float *
coeff, ptrdiff_t ofs, ptrdiff_t
len);
93 const float iir[5][4],
float hist[5][2],
void(* assemble_freq_bands)(int32_t *dst, int32_t *src0, int32_t *src1, const int32_t *coeff, ptrdiff_t len)
void(* decode_hf)(int32_t **dst, const int32_t *vq_index, const int8_t hf_vq[1024][32], int32_t scale_factors[32][2], ptrdiff_t sb_start, ptrdiff_t sb_end, ptrdiff_t ofs, ptrdiff_t len)
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce output
void(* dmix_scale_inv)(int32_t *dst, int scale_inv, ptrdiff_t len)
void(* dmix_sub_xch)(int32_t *dst1, int32_t *dst2, const int32_t *src, ptrdiff_t len)
static av_always_inline float scale(float x, float s)
void(* lfe_x96_fixed)(int32_t *dst, const int32_t *src, int32_t *hist, ptrdiff_t len)
void(* sub_qmf_float[2])(SynthFilterContext *synth, AVTXContext *imdct, av_tx_fn imdct_fn, float *pcm_samples, int32_t **subband_samples_lo, int32_t **subband_samples_hi, float *hist1, int *offset, float *hist2, const float *filter_coeff, ptrdiff_t npcmblocks, float scale)
void(* av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride)
Function pointer to a function to perform the transform.
void(* dmix_sub)(int32_t *dst, const int32_t *src, int coeff, ptrdiff_t len)
av_cold void ff_dcadsp_init(DCADSPContext *s)
void(* dmix_scale)(int32_t *dst, int scale, ptrdiff_t len)
void(* sub_qmf_fixed[2])(SynthFilterContext *synth, DCADCTContext *imdct, int32_t *pcm_samples, int32_t **subband_samples_lo, int32_t **subband_samples_hi, int32_t *hist1, int *offset, int32_t *hist2, const int32_t *filter_coeff, ptrdiff_t npcmblocks)
void(* lfe_iir)(float *output, const float *input, const float iir[5][4], float hist[5][2], ptrdiff_t factor)
void(* lbr_bank)(float output[32][4], float **input, const float *coeff, ptrdiff_t ofs, ptrdiff_t len)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some input
void(* dmix_add)(int32_t *dst, const int32_t *src, int coeff, ptrdiff_t len)
void(* lfe_x96_float)(float *dst, const float *src, float *hist, ptrdiff_t len)
static const int factor[16]
void(* decode_joint)(int32_t **dst, int32_t **src, const int32_t *scale_factors, ptrdiff_t sb_start, ptrdiff_t sb_end, ptrdiff_t ofs, ptrdiff_t len)
av_cold void ff_dcadsp_init_x86(DCADSPContext *s)
static const double coeff[2][5]
void(* lfe_fir_float[2])(float *pcm_samples, int32_t *lfe_samples, const float *filter_coeff, ptrdiff_t npcmblocks)
void(* lfe_fir_fixed)(int32_t *pcm_samples, int32_t *lfe_samples, const int32_t *filter_coeff, ptrdiff_t npcmblocks)
void(* decor)(int32_t *dst, const int32_t *src, int coeff, ptrdiff_t len)