Commit f462ed1f authored by Måns Rullgård's avatar Måns Rullgård

Make synth_filter a function pointer

Originally committed as revision 22827 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 38d52f3e
...@@ -253,6 +253,7 @@ typedef struct { ...@@ -253,6 +253,7 @@ typedef struct {
int debug_flag; ///< used for suppressing repeated error messages output int debug_flag; ///< used for suppressing repeated error messages output
DSPContext dsp; DSPContext dsp;
FFTContext imdct; FFTContext imdct;
SynthFilterContext synth;
} DCAContext; } DCAContext;
static const uint16_t dca_vlc_offs[] = { static const uint16_t dca_vlc_offs[] = {
...@@ -775,7 +776,7 @@ static void qmf_32_subbands(DCAContext * s, int chans, ...@@ -775,7 +776,7 @@ static void qmf_32_subbands(DCAContext * s, int chans,
for (; i < 32; i++) for (; i < 32; i++)
s->raXin[i] = 0.0; 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_hist[chans], &s->hist_index[chans],
s->subband_fir_noidea[chans], prCoeff, s->subband_fir_noidea[chans], prCoeff,
samples_out, s->raXin, scale, bias); samples_out, s->raXin, scale, bias);
...@@ -1298,6 +1299,7 @@ static av_cold int dca_decode_init(AVCodecContext * avctx) ...@@ -1298,6 +1299,7 @@ static av_cold int dca_decode_init(AVCodecContext * avctx)
dsputil_init(&s->dsp, avctx); dsputil_init(&s->dsp, avctx);
ff_mdct_init(&s->imdct, 6, 1, 1.0); ff_mdct_init(&s->imdct, 6, 1, 1.0);
ff_synth_filter_init(&s->synth);
for(i = 0; i < 6; i++) for(i = 0; i < 6; i++)
s->samples_chanptr[i] = s->samples + i * 256; s->samples_chanptr[i] = s->samples + i * 256;
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include "fft.h" #include "fft.h"
#include "synth_filter.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_buf_ptr, int *synth_buf_offset,
float synth_buf2[32], const float window[512], float synth_buf2[32], const float window[512],
float out[32], const float in[32], float scale, float bias) float out[32], const float in[32], float scale, float bias)
...@@ -55,3 +55,10 @@ void ff_synth_filter_float(FFTContext *imdct, ...@@ -55,3 +55,10 @@ void ff_synth_filter_float(FFTContext *imdct,
} }
*synth_buf_offset= (*synth_buf_offset - 32)&511; *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);
}
...@@ -23,9 +23,14 @@ ...@@ -23,9 +23,14 @@
#include "fft.h" #include "fft.h"
void ff_synth_filter_float(FFTContext *imdct, typedef struct SynthFilterContext {
float *synth_buf_ptr, int *synth_buf_offset, void (*synth_filter_float)(FFTContext *imdct,
float synth_buf2[32], const float window[512], float *synth_buf_ptr, int *synth_buf_offset,
float out[32], const float in[32], float scale, float bias); 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 */ #endif /* AVCODEC_SYNTH_FILTER_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment