mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Make synth_filter a function pointer
Originally committed as revision 22827 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
38d52f3ea3
commit
f462ed1f82
@ -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,
|
|||||||
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)
|
|||||||
|
|
||||||
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 @@
|
|||||||
#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,
|
|||||||
}
|
}
|
||||||
*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 @@
|
|||||||
|
|
||||||
#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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user