Mercurial > libavcodec.hg
changeset 11592:18f17f44de37 libavcodec
Make synth_filter a function pointer
author | mru |
---|---|
date | Sat, 10 Apr 2010 16:27:53 +0000 |
parents | 59a801bfc636 |
children | b7fa70eabb1f |
files | dca.c synth_filter.c synth_filter.h |
diffstat | 3 files changed, 20 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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;
--- 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); +}
--- 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 */