# HG changeset patch # User reimar # Date 1278841618 0 # Node ID fc6f2b4e8a26c4c0b9897d84faee6088f69dd4ab # Parent 67f2fb3ff4c776e9f8cafe956594344c887c3b8c Avoid calling av_resample_init again when the values are the same as before. The init function can be called multiple times when e.g. additional format filters are inserted, so this speeds things up. Patch by Dan Oscarsson [Dan.Oscarsson tieto com]. diff -r 67f2fb3ff4c7 -r fc6f2b4e8a26 libaf/af_lavcresample.c --- a/libaf/af_lavcresample.c Sun Jul 11 09:40:46 2010 +0000 +++ b/libaf/af_lavcresample.c Sun Jul 11 09:46:58 2010 +0000 @@ -39,6 +39,13 @@ int linear; int phase_shift; double cutoff; + + int ctx_out_rate; + int ctx_in_rate; + int ctx_filter_size; + int ctx_phase_shift; + int ctx_linear; + double ctx_cutoff; }af_resample_t; @@ -61,8 +68,17 @@ af->mul = (double)af->data->rate / data->rate; af->delay = af->data->nch * s->filter_length / min(af->mul, 1); // *bps*.5 + if (s->ctx_out_rate != af->data->rate || s->ctx_in_rate != data->rate || s->ctx_filter_size != s->filter_length || + s->ctx_phase_shift != s->phase_shift || s->ctx_linear != s->linear || s->ctx_cutoff != s->cutoff) { if(s->avrctx) av_resample_close(s->avrctx); s->avrctx= av_resample_init(af->data->rate, /*in_rate*/data->rate, s->filter_length, s->phase_shift, s->linear, s->cutoff); + s->ctx_out_rate = af->data->rate; + s->ctx_in_rate = data->rate; + s->ctx_filter_size = s->filter_length; + s->ctx_phase_shift = s->phase_shift; + s->ctx_linear = s->linear; + s->ctx_cutoff = s->cutoff; + } // hack to make af_test_output ignore the samplerate change out_rate = af->data->rate;