# HG changeset patch # User mru # Date 1270916873 0 # Node ID 18f17f44de37c2be6cac94c935905cc3e3a821a5 # Parent 59a801bfc636cc1977042a0c43a20c21f00bb7f7 Make synth_filter a function pointer diff -r 59a801bfc636 -r 18f17f44de37 dca.c --- a/dca.c Sat Apr 10 16:27:47 2010 +0000 +++ b/dca.c Sat Apr 10 16:27:53 2010 +0000 @@ -253,6 +253,7 @@ int debug_flag; ///< used for suppressing repeated error messages output DSPContext dsp; FFTContext imdct; + SynthFilterContext synth; } DCAContext; static const uint16_t dca_vlc_offs[] = { @@ -775,7 +776,7 @@ for (; i < 32; i++) s->raXin[i] = 0.0; - ff_synth_filter_float(&s->imdct, + s->synth.synth_filter_float(&s->imdct, s->subband_fir_hist[chans], &s->hist_index[chans], s->subband_fir_noidea[chans], prCoeff, samples_out, s->raXin, scale, bias); @@ -1298,6 +1299,7 @@ dsputil_init(&s->dsp, avctx); ff_mdct_init(&s->imdct, 6, 1, 1.0); + ff_synth_filter_init(&s->synth); for(i = 0; i < 6; i++) s->samples_chanptr[i] = s->samples + i * 256; diff -r 59a801bfc636 -r 18f17f44de37 synth_filter.c --- a/synth_filter.c Sat Apr 10 16:27:47 2010 +0000 +++ b/synth_filter.c Sat Apr 10 16:27:53 2010 +0000 @@ -21,7 +21,7 @@ #include "fft.h" #include "synth_filter.h" -void ff_synth_filter_float(FFTContext *imdct, +static void synth_filter_float(FFTContext *imdct, float *synth_buf_ptr, int *synth_buf_offset, float synth_buf2[32], const float window[512], float out[32], const float in[32], float scale, float bias) @@ -55,3 +55,10 @@ } *synth_buf_offset= (*synth_buf_offset - 32)&511; } + +av_cold void ff_synth_filter_init(SynthFilterContext *c) +{ + c->synth_filter_float = synth_filter_float; + + if (ARCH_ARM) ff_synth_filter_init_arm(c); +} diff -r 59a801bfc636 -r 18f17f44de37 synth_filter.h --- a/synth_filter.h Sat Apr 10 16:27:47 2010 +0000 +++ b/synth_filter.h Sat Apr 10 16:27:53 2010 +0000 @@ -23,9 +23,14 @@ #include "fft.h" -void ff_synth_filter_float(FFTContext *imdct, - float *synth_buf_ptr, int *synth_buf_offset, - float synth_buf2[32], const float window[512], - float out[32], const float in[32], float scale, float bias); +typedef struct SynthFilterContext { + void (*synth_filter_float)(FFTContext *imdct, + float *synth_buf_ptr, int *synth_buf_offset, + float synth_buf2[32], const float window[512], + float out[32], const float in[32], + float scale, float bias); +} SynthFilterContext; + +void ff_synth_filter_init(SynthFilterContext *c); #endif /* AVCODEC_SYNTH_FILTER_H */