Mercurial > mplayer.hg
changeset 31632:fc6f2b4e8a26
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].
author | reimar |
---|---|
date | Sun, 11 Jul 2010 09:46:58 +0000 |
parents | 67f2fb3ff4c7 |
children | 3af732078f52 |
files | libaf/af_lavcresample.c |
diffstat | 1 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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;