From 7d29c6eebc428741004071f7a92ea37d8d1d2cce Mon Sep 17 00:00:00 2001 From: Bojan Zivkovic Date: Wed, 6 Mar 2013 14:55:06 +0100 Subject: mips: Optimization of IIR filter function Signed-off-by: Bojan Zivkovic Reviewed-by: Nedeljko Babic Signed-off-by: Michael Niedermayer --- libavcodec/psymodel.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libavcodec/psymodel.c') diff --git a/libavcodec/psymodel.c b/libavcodec/psymodel.c index 09dd83d315..ea11636ce2 100644 --- a/libavcodec/psymodel.c +++ b/libavcodec/psymodel.c @@ -88,6 +88,7 @@ typedef struct FFPsyPreprocessContext{ float stereo_att; struct FFIIRFilterCoeffs *fcoeffs; struct FFIIRFilterState **fstate; + struct FFIIRFilterContext fiir; }FFPsyPreprocessContext; #define FILT_ORDER 4 @@ -115,6 +116,9 @@ av_cold struct FFPsyPreprocessContext* ff_psy_preprocess_init(AVCodecContext *av for (i = 0; i < avctx->channels; i++) ctx->fstate[i] = ff_iir_filter_init_state(FILT_ORDER); } + + ff_iir_filter_init(&ctx->fiir); + return ctx; } @@ -122,11 +126,12 @@ void ff_psy_preprocess(struct FFPsyPreprocessContext *ctx, float **audio, int ch { int ch; int frame_size = ctx->avctx->frame_size; + FFIIRFilterContext *iir = &ctx->fiir; if (ctx->fstate) { for (ch = 0; ch < channels; ch++) - ff_iir_filter_flt(ctx->fcoeffs, ctx->fstate[ch], frame_size, - &audio[ch][frame_size], 1, &audio[ch][frame_size], 1); + iir->filter_flt(ctx->fcoeffs, ctx->fstate[ch], frame_size, + &audio[ch][frame_size], 1, &audio[ch][frame_size], 1); } } -- cgit v1.2.3